Git - 我们可以恢复已删除的提交吗?

时间:2016-01-12 19:06:00

标签: git restore git-commit

我很惊讶,我无法在SO上找到答案。

  

我们可以在git中恢复/恢复已删除的提交吗?

例如,这就是我所做的:

# Remove the last commit from my local branch
$ git reset --hard HEAD~1

# Force push the delete
$ git push --force

现在,有没有办法找回被删除的提交? git是否在内部记录(记录)删除?

3 个答案:

答案 0 :(得分:98)

要返回该提交,您可以使用reflog查找它的参考号。

  

参考日志,或" reflogs",记录分支的提示和   其他引用已在本地存储库中更新。

运行此命令:

git reflog

扫描前几个条目,找到丢失的提交。跟踪该提交的标识符(您可以使用第1列或第2列)。让我们调用标识符" ID"。

如果你在重置后没有做任何额外的工作 - 你可以这样做:

git reset --hard ID
git push -f origin master

如果你在重置后做了其他的工作,你可以选择回到你的分支上,如下所示:

git cherry-pick ID
git push origin master

答案 1 :(得分:13)

是的,您可以在reflog中找到您的提交:

git reflog

显示在您的存储库中创建的所有提交 - 在此之后您应该通过checkout命令签出以删除提交

git checkout <your commit-SHA>

或樱桃 - 选择它:

git cherry-pick <your commit-SHA>

答案 2 :(得分:4)

尝试git reflog,又名参考日志,它允许您返回本地仓库中的历史记录。

https://git-scm.com/docs/git-reflog