一、 使用场景
近期作为中型java微服务项目管理,面临一个很严峻的问题,也就是同一个项目代码(多个微服务下),不同的服务代码模块有两个团队同时进行开发操作,稍有不慎代码版本就冲突四起,分支紊乱。
二、 解决思路
1. 结合git-flow的分支管理思想,依据环境进行环境分支的设置:dev、uat、master(此处抛弃github-flow的使用,主要是因为该管理模式不适合企业项目代码的开发)
2.一般项目都会有3-4个环境的设置,包含但不仅限于dev、sit、uat、prod等:如果只取三个环境(dev、uat、prod),那么针对于开发迭代过程中的设置有三项——
i. 环境与分支关联关系:dev-dev,uat-uat,prod-master;
ii. 针对所有日常的迭代开发,dev作为日常的开发测试环境,根据迭代看板的需求,建立feature分支,一个卡片任务对应一个feature分支,在dev环境完成之后进入用户验收测试的情况下,可以合并至uat
iii. 针对紧急修复版本,基于master分支建立hotfix分支,关联看板热修复任务(编号),开发完成之后合并至dev测试,没有问题的情况下,可以直接合并到master
iv. uat分支作为待发布的验证分支,在发版前的用户验收测试时,才允许将dev的代码cherry-pick或者全部合并到这个上面。
三、 常见问题
1. 关于多个团队开发时的冲突,需要有版本日历的存在,不能仅限于代码版本的管理。需要先确定不同团队对于同一个项目的开发发布日期,以便于排版时间
2. 针对两个团队同时开发一个模块,并且发布时间不一致情况下,在发版时间确认之后,需要新建一个中间的过渡分支作为dev/uat环境发布的分支,先发布的团队代码合并到dev,后发布的团队每次必须同步该分支代码,以便于尽快发现冲突文件并处理。
3. 关于协作其实还有很多很多的问题,会有一些细微的操作,时间有限不多做赘述,有问题欢迎多多留言~
四、 参考资料
1. git/svn常用指令 :https://mp.weixin.qq.com/s?__biz=MzAxODcyNjEzNQ==&mid=2247489852&idx=3&sn=89e288b26fbd61137bde214011865284&chksm=9bd0b4a4aca73db260d5c7a88e21bc89910f32f4e3fcf0a8f8386550dda62f5af0f78f862265&scene=27#wechat_redirect
2. git-flow和github-flow区别: