多人开发场景中,经常会出现分支合并冲突的现象,同时解决起来也很麻烦.
因为涉及多人修改同一处代码,有可能这段代码修改,已经过去很久了,很难知道应该保留哪一方的修改。
严重影响了开发效率,为此需要提前发现冲突,提前修复
为什么要提前检测,能带来什么好处?
1. 早发现,早整治,能100%无冲突合入,提高合入率,减少返工率
2. 能发现哪些文件哪些函数经常出现冲突,对这些文件及函数进行统一整改
怎么检测?检测的原理是什么?
场景举例:
1. 个人分支:personal
2. 项目主干分支:master
3. 开发人员在个人分支上进行特性开发,期间可能会往远端库推送多次,最终会合入到主干分支
检测时机
1. 分支推送到远端库后,自动触发自动化构建检测
* 缺点:频繁检测,浪费资源,可能要修复冲突多次
2. 分支需要合入主干时,如创建Merge/Pull Request后,发起检测
* 优点:在需要时检测,如有冲突,只需修复一次
怎么检测
通过三路合并检测:
1. 通过`git merge-base personal master`找出共同的节点,称之为:base_sha
2. 通过`git merge-tree base_sha personal master`获取合并后的结果
3. 如果输出有`changed in both`字样,那说明存在冲突
总结
1. 定期拉取主干分支,更新到个人分支,保持与主干分支差异最想
2. 开发完成后,尽快合入
3. 根据冲突提前检测,统计出频繁冲突文件列表,能够提前预警
网友评论