Git合并冲突保留双方变更方法及多PR同文件修改场景处理问询
相关问题解答
两个互相依赖的PR合并优先级建议
优先将PR1的变更提前同步到PR2分支,不需要等待PR1合入master。
两个PR存在互相依赖关系,提前同步后可以保证PR2代码可正常编译,CI校验可以正常通过,不会阻塞PR2的评审流程。仅需额外注意:需要确认PR1的代码已经基本通过评审、不会出现大范围改动,避免后续PR1变更后你需要重复调整PR2的代码。如果PR1还未进入评审阶段、改动风险较高,也可以先在PR2中标记依赖PR1,等待PR1合入master后再做同步,可根据团队协作规范灵活选择。
PR1已合入master后同步变更到PR2的操作方法
常用两种操作方式,可根据分支特性选择:
- 合并操作(适合多人协作的公共PR2分支,不会修改原有提交历史)
- 切换到本地PR2分支:
git checkout pr2 - 拉取远程最新的master分支代码:
git fetch origin && git pull origin master - 若出现合并冲突,解决冲突后执行
git add .,再执行git commit提交合并结果,最后推送到远程PR2分支即可:git push origin pr2
- 切换到本地PR2分支:
- 变基操作(适合个人维护的PR2分支,可以保持提交历史线性干净)
- 切换到本地PR2分支:
git checkout pr2 - 拉取远程最新master代码:
git fetch origin - 执行变基操作:
git rebase origin/master - 解决冲突后执行
git add .,再执行git rebase --continue,直到所有变基步骤完成,最后强制推送到远程PR2分支即可:git push -f origin pr2
- 切换到本地PR2分支:
合并冲突时保留双方所有更改的操作方法
Git出现合并冲突时,会在冲突文件中用特殊标记区分两个分支的内容:
<<<<<<< HEAD // 当前分支的代码内容 ======= // 待合并分支的代码内容 >>>>>>> 待合并分支名
要保留双方所有更改可以用两种方式实现:
- 手动处理:直接删除
<<<<<<<、=======、>>>>>>>三个标记行,两部分代码全部保留即可。针对你的场景可自行调整顺序,把PR1新增的5行放在前面,PR2新增的6行放在后面,即可保证双方的新增代码都不会丢失。 - 自动处理:合并时指定union合并策略,Git会自动保留双方的所有更改,无需手动修改标记:
命令为:git merge -X union 待合并分支名
自动处理完成后建议手动检查代码顺序、验证编译逻辑,避免自动合并的顺序不符合业务要求。
内容的提问来源于stack exchange,提问作者rohitt
相关产品推荐
相关产品推荐

