我删除了一些文件。

我还没有承诺。

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

我做了一个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-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将恢复两者。

其他回答

使用git ls-files签出删除(-d)或修改(-m)的文件。

git checkout $(git ls-files -d)

参见如何仅恢复git签出上修改的文件?

对于运行git签出时获得未知修订或不在工作树中的路径的任何人

晚上好

好的

您的文件将被恢复

对我来说,什么工作是git签出{SHA1的版本提交恢复}"{路径文件恢复}"

例如git校验5a6b3179e58edff9c90326b9a04284b02fd67bd0 "src-ui/views/includes/radar.pug"

(在我们想要文件进入的分支中执行)

该命令执行后,恢复的文件将存在于原始位置(需要提交)

更新的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 path/to/file-I-want-to-bring-back.txt