如何轻松撤消 git rebase?一个冗长的手动方法是:
- 检查两个分支的提交父级
- 创建并 checkout 一个临时分支
- 手动挑选所有提交
- 重置错误的 rebased 分支以指向临时分支
在我目前的情况下,这是可行的,因为我可以很容易地发现来自两个分支的提交(一个是我的东西,另一个是我同事的东西)。然而,我的方法让我印象深刻,因为它不是最优的并且容易出错(假设我刚刚用我自己的两个分支重新建立了基础)。
澄清:我说的是 rebase,在此期间,多个 提交被重放,而不仅仅是一个。
最佳答案
最简单的方法是找到分支的头提交,因为它紧接在 reflog 开始 rebase 之前。 ...
git reflog
并将当前分支重置为它(在使用 --hard
选项重置之前要绝对确定的通常注意事项)。
假设旧提交是引用日志中的 HEAD@{2}
:
git reset --hard HEAD@{2}
在 Windows 中,您可能需要引用引用:
git reset --hard "HEAD@{2}"
只需执行 git log HEAD@{2}
(Windows: git log "HEAD@{ 2}"
).
如果您没有禁用每个分支的 reflog,您应该能够简单地执行 git reflog branchname@{1}
,因为 rebase 在重新连接到最终分支之前分离分支头。我会仔细检查这一点,尽管我最近没有验证过这一点。
默认情况下,所有 reflogs 都为非裸存储库激活:
[core]
logAllRefUpdates = true
关于git - 撤消 git rebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/134882/