关于提交:在GIT中撤消删除

Undo delete in GIT

我做了件很蠢的事。我使用git commit(文件编辑+新文件)进行了提交(c)。然后我做了最后的修改承诺。然后我递归地删除了所有文件!!)使用git rm -r。然后我又提交了一个git commit(c)。

1
2
3
A-B-C
    ↑
  master

是否有任何方法可以恢复文件,但保留我在第一次提交时所做的更改?(c)我宁愿不回到(b)。我尝试了Git重置——软头^,所以Git状态列出了我删除的文件,然后我执行了Git签出,但仍然没有运气。我甚至不知道是否有可能。


帮你自己一个忙,不要像另一个答案所建议的那样去做,去解决更多的问题。

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

1
git checkout -f

警告:在执行此命令之前提交未提交的文件,否则将丢失所有文件。

删除的文件应再次返回。

如果没有,如果你能从git reflog中找到你想要的承诺(c,等等,你的问题还不清楚),那么就做git reset --hard ,你应该已经准备好了。


如果我正确理解你,你重写了commit c,那么最初的commit,我们称之为c1,从commit图中是不可访问的,但它仍然存在(git将所有commit保留一段时间)。使用git reflog获取commit散列,使用git checkout 或其他适当的命令获取旧状态c1。