我删除了一些文件。

我还没有承诺。

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

我做了一个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 ls-files签出删除(-d)或修改(-m)的文件。

git checkout $(git ls-files -d)

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

其他回答

如果你用过

git rm filename

然后删除一个文件

git checkout path/to/filename

不管用,在这种情况下

git checkout HEAD^ path/to/filename

应该工作

如果您正在寻找已删除的目录。

 git checkout ./pathToDir/*

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

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

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

$ git checkout -- file.cpp

如果你想一次性恢复所有文件

记住使用句点,因为它告诉git抓取所有的文件。

这个命令将重置头部并取消所有的更改:

$ git reset HEAD . 

然后运行该命令恢复所有文件:

$ git checkout .

然后做一个git状态,你会得到:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

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

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

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

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