Git rebase变基时如何对单个冲突步骤使用指定合并策略处理
问题结论
存在可以满足需求的操作,无需中断当前正在进行的rebase流程。
全版本通用操作方案
所有Git版本都可以通过以下步骤实现单步重试:
- 先丢弃当前未完成的合并结果,将工作区、暂存区恢复到当前rebase步骤开始前的干净状态:
git merge --abort
也可以用git reset --hard HEAD达到同样效果。
2. 手动用指定合并策略重新应用当前rebase步骤对应的提交:
rebase过程中当前待应用的提交哈希会存在.git/rebase-merge/original-commit文件中,直接调用cherry-pick传入你需要的合并参数即可:
git cherry-pick -s recursive -X theirs $(cat .git/rebase-merge/original-commit)
- 若上述命令执行无冲突,直接执行
git rebase --continue即可继续后续rebase流程,后续步骤仍使用你启动rebase时指定的默认合并规则,不受本次单步策略的影响。如果执行后仍有冲突,手动解决冲突后执行git add <冲突文件>,再执行git rebase --continue即可。
高版本Git简便方案
如果你使用的是Git 2.34及以上版本,可以不用手动执行cherry-pick,清掉未完成合并后直接在continue时传入合并策略参数,参数仅作用于当前单步:
# 先清掉当前未完成合并 git merge --abort # 重试当前步骤,使用指定合并策略 git rebase --continue -s recursive -X theirs
内容的提问来源于stack exchange,提问作者Wug
相关产品推荐
相关产品推荐

