我删除了一些文件。

我还没有承诺。

我想重置我的工作空间来恢复文件。

我做了一个git结帐。

但被删除的文件还是不见了。

git状态显示:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   deleted:    cc.properties
#   deleted:    store/README
#   deleted:    store/cc.properties
#

为什么不结帐。将工作空间重置为HEAD?


当前回答

如果您没有提交任何更改,您所要做的就是保存这些更改,然后您将回到上一次工作提交。

git stash
git stash clear
git clean 

其他回答

由于您正在执行git签出,看起来您正在尝试将分支恢复到上次提交状态。

你可以通过git重置HEAD来实现这一点——很难

警告

这样做可能会删除所有最新的修改并取消您的修改,例如,您可能会丢失工作。这可能是你想要的,但请检查文件以确保。

在寻找如何从另一个分支合并后在我的工作目录中删除文件的答案时发现了这篇文章。合并后尚未作出任何承诺。 因为它是一个正在进行的合并,我不能只是添加它回来使用:

$ git reset <commitid#-where-file.cpp-existed> file.cpp

我不得不做另一个步骤,除了重置文件回来:

$ git checkout -- file.cpp

您可以使用git-restore一次性恢复文件。

如果你没有像这样提交你的删除:

➜  learning git:(daily) ✗ git status
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    deleted:    feelings/articles/2022/1/assets/20220109_093659_image.png
    deleted:    feelings/articles/2022/1/assets/20220109_094525_image.png
    deleted:    feelings/articles/2022/1/assets/20220109_100231_image.png
    deleted:    feelings/articles/2022/1/assets/20220109_100251_image.png
    deleted:    feelings/articles/2022/1/assets/20220109_100321_image.png
    deleted:    feelings/articles/2022/1/assets/20220109_101009_image.png

你可以使用这样的方法来恢复你的文件:

git restore --worktree --staged feelings/articles/2022/1/assets

-W,——worktree, -S,——staging 指定恢复位置。如果没有指定任何选项,默认情况下将恢复工作树。指定——staging只会恢复索引。 指定both将恢复两者。

下面是在我的mac上帮助我的命令。我尝试了其他一些解决方案,但它们对我不起作用。

OSX Mavericks上的Git版本

mac-pro:main chris$ git version
git version 1.8.5.2 (Apple Git-48)

命令

git checkout HEAD -- path/to/file/file.cc

你想看这个吗

这适用于你用过的情况

git checkout -- .

在你做出承诺之前。

您可能还希望删除尚未创建的已创建文件。你不想要他们。:

git reset -- .