Git合并冲突时公共祖先版本覆盖本地副本,如何让未解决行保留本地版本?
Git合并冲突未处理块默认保留本地版本解决方案
方案1:调整Git合并命令参数
- 若尚未执行合并操作,可在合并命令中添加
-X ours参数,指定所有无法自动合并的冲突块默认采用当前本地分支内容,仅手动调整为远程版本的冲突块会被修改:git merge <目标分支名> -X ours - 若已处于合并流程中,可执行以下命令将指定文件的所有未解决冲突块直接替换为本地版本,已手动调整完成的冲突块不受影响:
git checkout --ours <冲突文件路径>
方案2:修改Beyond Compare合并规则
你遇到的未编辑冲突块被公共祖先版本覆盖的问题,是Beyond Compare默认合并配置导致的,可按以下步骤调整:
- 打开Beyond Compare,进入「工具」-「选项」-「调整」-「合并」设置面板
- 找到「未解决的冲突」配置项,将默认值从「使用祖先版本」修改为「使用左侧版本」(默认配置下左侧为本地分支文件内容)
- 保存配置后重启Beyond Compare即可生效,后续未手动修改的冲突块会默认保留本地版本内容
方案3:保留Git原生冲突标记手动处理
如果不想修改工具配置,也可以在合并时添加--no-commit参数,让Git完成自动合并后不自动提交、不自动唤起外部合并工具:git merge <目标分支名> --no-commit
你可以手动筛选出存在冲突的文件,按需调用Beyond Compare处理指定文件,剩余冲突可直接在编辑器中选择保留本地版本即可。
内容的提问来源于stack exchange,提问作者IT researcher
相关产品推荐
相关产品推荐

