Git Branch分支的使用
今天和同事一起讨论起Git分支的使用,之前也讨论过,但是结果一直不理想,今天的讨论还算是初见成效,随即记录下。希望对读者有所帮助,也欢迎一起讨论。
场景
相信每个公司都会有很多套环境(DEV,TEST,UAT,PROD等等),也会同时很多个功能需求,功能需求有缓有急,导致上线时间也不尽相同。如果每个功能服务足够原子化,与其他的模块耦合度不高也会好点,但是如果某个项目很重很大,版本的运维成本就会成指数式上升。
解决方案
针对于以上场景就想出了两种分支类型:功能性分支(需求分支)和环境分支。怎么理解呢?
分支 | 功能 | 代码来源 |
---|---|---|
功能性分支 | 此类分支仅能提交具体业务代码 | 接收到需求时以PROD分支为基础 |
环境分支 | 此类分支代码的更新仅能通过合并分支 |
流程图
公司发展不是很好,仅一个需求开发
1.功能A分支本地开发中
2.开发完成啦,我要上DEV环境测一下
3.自测完成,提交测试组测试
4.测试完成,排期上线
公司业务上来了,同时需求变多了
问题
- 上线失败,没问题,回退之前版本;上线发现bug,可紧急修复,功能分支修复orPROD分支修复?
我们讨论的结果是在PROD分支修复,修复完成再次合并至其他环境分支,跟踪上线成功后,功能性分支删除(保留一至两月也可) - 合并至环境分支时冲突如何?
作为一个开发,最怕的就是代码合并冲突,应用维度足够细粒度,一至两人维护可极大程度避免代码冲突,但是很不幸,我们公司的暂时的项目,维护人数可达四人之多,关键是功能多,碎,代码冲突可能性很大。对于此上问题,只能说,合并的时候小心着点,回归测试足一点。
一流公司玩的是规范,开发者遵守规范是最基本的,试着玩俩月看看。