多分支合并场景:branch1合入master后branch2的PR是否会产生大量冲突
结论
正常操作下不会出现大量冲突,Git会基于提交记录自动识别已合入的变更,避免重复冲突。
原理说明
Git执行分支合并时,会同时比对三个核心节点:待合并的两个分支的最新提交,以及两个分支的最近公共祖先提交,只会对三个节点间存在差异的部分进行合并校验。
结合你的操作场景:
branch1的所有提交已经被你提前合并到了branch2中,这些提交的哈希值是固定的- 当你把
branch1合入master后,branch1的所有提交会直接加入master的提交链 - 后续提交
branch2的PR往master合并时,Git会识别到branch2里的branch1相关提交已经全部存在于master分支,不会重复比对这部分变更,只会校验你后续在branch2上新增的开发内容和master的差异,只要新增内容没有和master上的其他变更修改同一行代码的同一位置,就不会产生冲突。
特殊例外场景
如果把branch1合入master时,你使用了squash merge(压缩合并)或者手动改写了branch1的提交哈希,Git就无法识别两边的变更来自同一批提交,这时候才会出现重复冲突。
遇到这种情况也可以快速解决:在branch1合并完成后,切换到branch2分支执行git pull origin master拉取最新的master代码,本地解决一次冲突后再推送,后续PR就不会再出现重复冲突。
内容的提问来源于stack exchange,提问作者BlackHole
相关产品推荐
相关产品推荐

