git - 在 GIT 中撤消删除

标签 git commit delete-file undo undelete

我做了一些非常愚蠢的事情。 我使用 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>你应该一切就绪。

关于git - 在 GIT 中撤消删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9477702/

相关文章:

git - 我无法在Windows 7中推送到新的远程服务器GIT

html - Github页面404找不到文件

git - 在不实际提交的情况下编写提交消息

git - 如何通过苛刻的代理使用 GitHub?

git - 如何使用 git-emacs 进行 git push?

git - 当我使用 "git branch"时是否可以显示最新的提交?

尽管刷新和事务提交, hibernate 实体属性没有被持久化到数据库中

windows - 找不到要通过 git bash 删除的文件,但它显示在文件资源管理器中

version-control - 从ClearCase快照删除文件的 "proper"方法是什么?

android - 删除数据库文件夹内部存储