Git Branch分支的使用

今天和同事一起讨论起Git分支的使用,之前也讨论过,但是结果一直不理想,今天的讨论还算是初见成效,随即记录下。希望对读者有所帮助,也欢迎一起讨论。

场景

相信每个公司都会有很多套环境(DEV,TEST,UAT,PROD等等),也会同时很多个功能需求,功能需求有缓有急,导致上线时间也不尽相同。如果每个功能服务足够原子化,与其他的模块耦合度不高也会好点,但是如果某个项目很重很大,版本的运维成本就会成指数式上升。


解决方案

针对于以上场景就想出了两种分支类型:功能性分支(需求分支)和环境分支。怎么理解呢?

分支 功能 代码来源
功能性分支 此类分支仅能提交具体业务代码 接收到需求时以PROD分支为基础
环境分支 此类分支代码的更新仅能通过合并分支

流程图

公司发展不是很好,仅一个需求开发

1.功能A分支本地开发中
2.开发完成啦,我要上DEV环境测一下

Created with Raphaël 2.1.0功能A分支功能A分支DEV分支DEV分支①开发环境调试(合并)②开发者自测③自测完成

3.自测完成,提交测试组测试

Created with Raphaël 2.1.0功能A分支功能A分支DEV分支DEV分支TEST分支TEST分支①开发环境调试(合并)②开发者自测③自测完成④测试环境测试(合并)⑤测试人员测试⑥测试完成

4.测试完成,排期上线

Created with Raphaël 2.1.0功能A分支功能A分支DEV分支DEV分支TEST分支TEST分支PROD分支PROD分支①开发环境调试(合并)②开发者自测③自测完成④测试环境测试(合并)⑤测试人员测试⑥测试完成⑦生产环境(合并并打版)

公司业务上来了,同时需求变多了

Git Branch分支的使用

问题

  • 上线失败,没问题,回退之前版本;上线发现bug,可紧急修复,功能分支修复orPROD分支修复?
    我们讨论的结果是在PROD分支修复,修复完成再次合并至其他环境分支,跟踪上线成功后,功能性分支删除(保留一至两月也可)
  • 合并至环境分支时冲突如何?
    作为一个开发,最怕的就是代码合并冲突,应用维度足够细粒度,一至两人维护可极大程度避免代码冲突,但是很不幸,我们公司的暂时的项目,维护人数可达四人之多,关键是功能多,碎,代码冲突可能性很大。对于此上问题,只能说,合并的时候小心着点,回归测试足一点。

一流公司玩的是规范,开发者遵守规范是最基本的,试着玩俩月看看。