我删除了一些文件。

我还没有承诺。

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

我做了一个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 checkout ./pathToDir/*

其他回答

您可以使用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 path/to/file-I-want-to-bring-back.txt

我碰巧将一些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

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