我很惊讶,我无法在SO上找到答案。
我们可以在git中恢复/恢复已删除的提交吗?
例如,这就是我所做的:
# Remove the last commit from my local branch
$ git reset --hard HEAD~1
# Force push the delete
$ git push --force
现在,有没有办法找回被删除的提交? git是否在内部记录(记录)删除?
答案 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
,又名参考日志,它允许您返回本地仓库中的历史记录。