Atr*_*tri 53 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
Run Code Online (Sandbox Code Playgroud)
现在,有没有办法找回被删除的提交?git是否在内部记录(记录)删除?
Jon*_*ink 129
要返回到该提交,您可以使用reflog来查找它的引用.
引用日志或"reflogs"记录在本地存储库中更新分支和其他引用的提示时.
运行此命令:
git reflog
Run Code Online (Sandbox Code Playgroud)
扫描前几个条目,找到丢失的提交.跟踪该提交的标识符(您可以使用第1列或第2列).我们称之为标识符"ID".
如果你在重置之后没有做任何额外的工作 - 你可以这样做:
git reset --hard ID
git push -f origin master
Run Code Online (Sandbox Code Playgroud)
如果你在重置后做了其他的工作,那么你可以选择回到你的分支上,如下所示:
git cherry-pick ID
git push origin master
Run Code Online (Sandbox Code Playgroud)
Kon*_*iak 14
是的,您可以找到您正在reflog
使用的提交:
git reflog
Run Code Online (Sandbox Code Playgroud)
显示在您的存储库中创建的所有提交 - 在此之后您应该通过checkout命令检出以删除提交
git checkout <your commit-SHA>
Run Code Online (Sandbox Code Playgroud)
或樱桃 - 选择它:
git cherry-pick <your commit-SHA>
Run Code Online (Sandbox Code Playgroud)