You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整Git提交顺序:将Rebased提交X移至提交栈顶部?

解决Git提交顺序调整的冲突复用问题

方法一:利用reflog找回原分支(最直接)

  • 执行git reflog,找到你执行rebase X操作前的分支头哈希值(记为OLD_HEAD),该状态下分支提交顺序为A->B->C->D。
  • 创建并切换到临时分支:git checkout -b temp OLD_HEAD
  • 将提交X cherry-pick到临时分支:git cherry-pick X
    • 若出现冲突,可先开启Git冲突复用功能自动解决:git config --global rerere.enabled true,再重新执行cherry-pick。
  • 切换回工作分支并重置到临时分支状态:git checkout your-branch && git reset --hard temp
  • 删除临时分支:git branch -D temp

方法二:启用rerere后用交互式rebase

  • 开启冲突自动复用功能:git config --global rerere.enabled true
  • 执行交互式rebase调整提交顺序:git rebase -i HEAD~5(数字5对应当前分支总提交数:X+A'+B'+C'+D')
  • 在弹出的编辑界面中,将X对应的行剪切到最后一行,保存退出。
  • Git会自动复用之前的冲突解决结果,无需手动重复处理。

为什么之前会重复解决冲突?

当你把X移到D'之后,Git需要将X重新应用到D'的提交基础上,这和之前将A'-D'应用到X上的冲突是反向的。默认情况下Git不会记录冲突解决历史,因此需要重复处理。而rerere(reuse recorded resolution)功能会记录冲突的解决方式,遇到反向冲突时自动复用。

内容的提问来源于stack exchange,提问作者roulette01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 02:43:33