我删除了一些文件。

我还没有承诺。

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

我做了一个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 rm filename

然后删除一个文件

git checkout path/to/filename

不管用,在这种情况下

git checkout HEAD^ path/to/filename

应该工作

其他回答

我碰巧将一些json文件从一个文件夹移动(而不是复制)到同一存储库中的另一个文件夹。然后我重命名了这些文件,并在新位置更改了一些内容。然而,我很快了解到,我没有复制和完全删除文件从以前的位置。

简单的解决方案:

git reset HEAD <oldfilepath_which_was_moved>
git restore <oldfilepath_which_was_moved>

对所有文件都这么做了,它们都回来了。

您还可以包含多个文件,以空格分隔。

git reset HEAD file_1_path file_2_path file_3_path

很容易修复,顺便说一下,这不会改变/删除新文件。

输出告诉您需要做什么。git重置HEAD cc.properties等。

这将取消rm操作。在此之后,再次运行git状态会告诉您需要执行git checkout——cc.properties来取回文件。

更新: 我的配置文件中有这个

$ git config alias.unstage
reset HEAD

我通常用它来取消舞台上的东西

更新的git(我的是2.27.0)更友好,实际的命令会在“git状态”中显示。 例如,如果您删除了文件tf.c,那么

$ git status
...
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
      deleted:    tf.c

你可以使用“git restore tf.c”来恢复它,就像它saz一样。不要再搜索了!

你已经进行了删除,所以你需要做:

git checkout HEAD cc.properties store/README store/cc.properties

Git结帐。仅从已经执行删除操作的索引中检出。

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

git stash
git stash clear
git clean