在GIT中撤销删除

我做了一件非常愚蠢的事情。 我使用git commit(文件编辑+新文件)(C)做了一个提交。 然后我做了最后的修改。 然后我使用git rm -rrecursion删除所有文件(!)然后我做了另一个git commit(C)。

 ABC
     ↑
  主

有没有什么方法来取消删除文件,但保持我在第一次提交的变化? (C)我宁愿不回(B)。 我试过git reset –soft head ^,所以然后git status列出了我删除的文件,然后我做了git checkout,但还是没有运气。 我甚至不知道是否有可能。

帮你一个忙,不要做像其他答案build议的git checkout <hash> ,并进入更多的问题。

如果您从工作目录中删除了文件,但尚未提交更改,请执行以下操作:

 git checkout -f 

小心:在执行此命令之前提交未提交的文件,否则您将丢失所有文件

被删除的文件应该回来了。

如果不是,如果你可以从git reflogfind你想要的提交(C等,你的问题不清楚),只要做git reset --hard <hash from reflog> ,你应该全部设置。

如果我正确地理解了你,你重写了提交C.所以原来的提交,我们称之为C1不能从你的提交图中访问,但它仍然存在(git保留所有提交一段时间)。 使用git reflog来获取提交哈希和git checkout <hash>或其他适当的命令来达到旧的状态C1。