我不小心说了git rm -r ..我该如何从中恢复呢?

我没有承诺。

我认为所有的文件都被标记为删除,并从我的本地签出中物理删除。

编辑:我可以(如果我知道命令)恢复到上次提交。但如果我能撤销git rm -r ..因为我真的不确定我在最后一次提交之后和git rm -r之前做了什么。


当前回答

已经有了一些很好的答案,但我可能会建议一个很少使用的语法,它不仅工作得很好,而且非常明确地表达了您想要的东西(因此并不可怕或神秘)。

git checkout <branch>@{"20 minutes ago"} <filename>

其他回答

我有完全相同的问题:清理我的文件夹,重新安排和移动文件。我输入:git rm。按回车键;然后我觉得我的肠子松了一点。幸运的是,我没有立即输入git commit -m ""。

但是,下面的命令

git checkout .

恢复了一切,救了我的命。

要重新获得一些单个文件或文件夹,可以使用以下方法

git reset -- path/to/file
git checkout -- path/to/file

这将首先重新创建路径/to/file的索引项,并重新创建上次提交时的文件,即head。

提示:可以向两个命令都传递一个提交哈希来从旧的提交中重新创建文件。详见git reset -help和git checkout -help。

如果上述方法都不能正常工作,则可以使用这里的建议检索数据:http://www.spinics.net/lists/git/msg62499.html

git prune -n
git cat-file -p <blob #>

如果执行命令git rm -r——cached . xml。在一个没有进行暂存(也就是没有提交)的repo中,你可以使用命令git restore——staging来撤销这个操作(从删除中取消暂存)。

简而言之,撤销git rm -r——cached。你只需要运行git restore - staging。

我也遇到过同样的情况。对我来说,解决方案是:

git checkout -- .