如何在Git Bash中解决Git Interactive Rebase变基冲突问题
Git Bash 变基(rebase)冲突处理方案
与VSCode冲突处理选项对应的命令行实现
首先需要明确:变基操作过程中Git的角色定义与普通合并相反,Git会先切换到你指定的基底分支(本次场景为origin master的53681c8提交),再逐个重放你本地功能分支的提交,因此:
- VSCode「接受当前更改」:保留基底分支(
origin master)的冲突内容,丢弃当前正在重放的本地提交的改动,对应命令:git checkout --ours jd-test/admin/messenger.xml - VSCode「接受传入更改」:保留当前正在重放的本地提交的冲突内容,覆盖基底分支的改动,对应命令:
git checkout --theirs jd-test/admin/messenger.xml - VSCode「合并双方更改」:手动编辑冲突文件整合两边改动,可直接通过命令行编辑器打开文件:
打开后文件中的冲突标记规则如下:# 用nano编辑器打开,也可替换为vim等你习惯的命令行编辑器 nano jd-test/admin/messenger.xml<<<<<<< HEAD到=======之间的内容为基底分支(origin master)的内容=======到>>>>>>> [提交ID]之间的内容为当前重放的本地提交的内容
手动编辑删除冲突标记、整合内容后保存退出即可。
当前场景最优处理步骤
- 按照你的业务需求选择上述三种冲突处理方式之一完成内容修改
- 标记冲突已解决:
git add jd-test/admin/messenger.xml - 继续变基流程:
git rebase --continue
备选操作
- 若不需要保留当前重放的这个提交的改动,可直接跳过该提交:
git rebase --skip - 若想终止整个变基流程,回到变基前的分支状态:
git rebase --abort
注意:由于你的待重放提交中还有多个提交修改了
messenger.xml,后续可能还会触发同类冲突,重复上述解决步骤直到所有提交重放完成即可。
内容的提问来源于stack exchange,提问作者Maryo David
相关产品推荐
相关产品推荐

