分支在应用开发,特别是在一个团队开发模式下应该是必备,目前团队中存在不善于使用分支的情况,举一个简单的场景:
我们的项目在周一和周三分别有两个版本点,版本内容包含不同的特性,比如周一版本使用老的表名规范,周三版本采用新的表名规范。在版本开发过程中可能会有各种 bug fix 提交到主分支上 。
目前我们采用的是开发计划和版本点同步的策略,也就是周一发版之后才对进行周三版本的开发工作。
这样做当然就不需要建立分支,也看似非常方便,但代价就是周一和周三之间开发时间太少,不适合版本迭代。
我的建议是要建立分支,而且要尽可能多地建立分支。
要做要这一点,必须要回答三个问题:
- 什么情况下需要建立分支 ?
- 如何保证和主分支同步 ?
- 如何单独发布模块特性分支代码?
以 lobby-console 子模块为例:
对于这个模块周三版本需要增加两个 feature
- 按照最新的数据字典规范化表名
- 改造日志框架加入 zdogs
对于这两个需求,项目经理可以根据版本发布时间分派一个特性分支:
- feature-PATCH-20190830
开发步骤一般如下:
1. 创建并切换到特性分支
git checkout -b feature-PATCH-20190830
2. 进行特性分支的开发
3. 开发完成,准备测试前同步主分支代码到特性分支:
git commit -am "feature-PATCH-20190830:complete"
git merge origin/master
git push origin feature-PATCH-20190830
4. 打包发布测试
其中需要注意绩点:
- 在 feature 分支上建议每次提交之前都保持和主分支同步( git rebase master),从而避免合并代码冲突的问题
- 目前一键发布脚本不支持指定分支发布(建议之后加上)