问题
假设有一个分支A,向master分支提交PR,然后发生无法自动解决的冲突,PR提示不能执行merge合并。
解决方案1
- 本地checkout检出并切换到A分支,pull拉取更新到最新代码
- 在本地A分支上,merge合并远程分支master
- 会提示无法合并,手动解决完冲突提交到A分支
- 回到PR,会发现PR已经无冲突
- 让有merge权限的人进行merge即可
注意:
优点:此方法适用于无merge权限的人操作
缺点:如果此PR最终被Declined拒绝的话,A分支上会包含PR目标分支的代码(本例中的master分支),造成代码污染。
解决方案2
- 本地checkout检出并切换到master分支,pull拉取更新到最新的master代码
- 手动执行将远程A分支合并到你本地的master分支,此时本地会看到冲突的文件
- 编辑冲突文件,手动解决冲突后,提交merge
- 回到PR,可以发现PR已经被merge了
注意:
优点:此方法仅限有merge权限的人操作
缺点:相比方案1,PR的源分支代码干净
建议
若PR大概率一定会被合并,建议使用方案1,更符合正常流程