如何强制合并Git分支?解决git merge -X theirs未合并pom.xml问题
问题解答
git merge -X theirs的行为逻辑
首先明确你的分支提交基线:你执行git reset --hard tip时,master和tip分支指向同一个提交,这个提交就是两个分支后续修改的共同祖先。
- 之后你仅在master分支修改了
pom.xml,tip分支从共同祖先到最新提交的整个路径中,从未修改过pom.xml,仅修改了控制器文件。 -X theirs是recursive合并策略的参数,仅当两个分支修改了同一个文件的同一区域产生合并冲突时才会生效,此时会直接选用被合并分支(也就是tip)的冲突内容。- 本次合并中两个分支的修改完全没有重叠(一个改pom,一个改控制器),没有任何冲突产生,所以
-X theirs参数全程没有触发。Git会默认保留master分支独有的pom.xml修改,同时合并tip分支独有的控制器修改,最终就出现了你看到的“仅控制器合并成功,pom.xml无变化”的结果。
强制同步master分支pom.xml与tip分支一致的方法
根据你的需求选择对应操作即可:
仅需要同步pom.xml单个文件
如果其他文件的合并结果符合预期,只需要覆盖pom.xml为tip分支的版本,执行以下命令:
# 确保当前在master分支 git checkout tip -- pom.xml # 执行后pom.xml就会和tip分支完全一致,直接提交即可 git add pom.xml git commit -m "chore: sync pom.xml with tip branch"
需要完全覆盖master所有修改,全量对齐tip分支
如果你希望本次合并完全丢弃master分支的所有独有修改,所有文件都以tip分支版本为准,使用theirs合并策略:
git merge -s theirs tip
注意该操作会覆盖master分支所有比tip新的修改,谨慎使用。
内容的提问来源于stack exchange,提问作者Niranjan
相关产品推荐
相关产品推荐

