在GIT中撤消删除
  我做了一件非常愚蠢的事情。  我使用git commit(文件编辑+新文件)(C)进行了提交。  然后我做了修改最后一次提交。  然后我使用git rm -r递归删除所有文件(!)然后我做了另一个git commit(C)。 
A-B-C
    ↑
  master
有什么方法可以取消删除文件,但保留我在第一次提交时所做的更改? (C)我宁愿不回到(B)。 我尝试了git reset --soft head ^,然后git status列出了我删除的文件,然后我做了git checkout,但仍然没有运气。 我甚至不知道是否有可能。
  帮你一个忙,不要做像其他答案建议的git checkout <hash>并进入更多问题。 
如果您从工作目录中删除了文件,但尚未提交更改,请执行以下操作:
git checkout -f
小心:在执行此命令之前提交未提交的文件,否则您将失去所有文件
被删除的文件应该再回来。
  如果不是,如果你可以从git reflog找到你想要的提交(C等,你的问题并不清楚),只需做git reset --hard <hash from reflog> ,你应该全部设置。 
  如果我正确地理解了你,你重写了提交C.所以最初的提交,我们称之为C1,不能从你的提交图中访问,但它仍然存在(git保留所有提交一段时间)。  使用git reflog来获取提交哈希和git checkout <hash>或其他适当的命令以获得旧状态C1。 
上一篇: Undo delete in GIT
