我启动了一个交互式rebase
来编辑一些提交。虽然一切顺利但我最后两次提交搞砸了(我不小心压扁了它们)。现在我希望在编辑最后两次提交之前我是否可以重置为提交,并且仍然处于我开始的那个rebase的中间。我可以看到reflog
中的步骤,但如果我重新设置任何这些步骤,我只能回到那个提交而不是那个rebase会话。如果我只想编辑最后两次提交(因为之前的所有内容都很好),我有什么方法可以做到这一点或者我有什么选择?
答案 0 :(得分:1)
最简单的方法是找到分支的头部提交,就像在reflog
中的rebase开始之前......
git reflog
并将当前分支重置为它(关于在使用--hard
选项重置之前绝对确定的常见警告)。
# Suppose the old commit was HEAD@{5} in the ref log
git reset --hard HEAD@{5}
您只需执行git log HEAD@{5} .
如果你已经启用了每个分支reflogs,你应该能够简单地执行git reflog branchname@{1}
,因为rebase会在重新连接到最终头部之前分离分支头。我会仔细检查这一点,尽管我最近还没有对此进行过验证。您可以通过添加:
[user]
logallrefupdates=true
为了更安全,请先备份:git tag BACKUP
。如果出现问题,您可以返回它:git reset --hard BACKUP
我发现这link非常有帮助。
感谢。