命名规范

  • master 分支:master
  • develop 分支:develop
  • release 稳定分支:release_stable_YYYYMMDD_nYYYYMMDD 为当前日期(年月日),n 为递增序列号;
  • release 测试分支:release_nightly_YYYYMMDD_nYYYYMMDD 为当前日期(年月日),n 为递增序列号;
  • 开发人员版分支:bug单号为 bugfree 编号,n 为递增序列号。
    • 修复 bug:fixbug_bug单号_邮箱前缀_n
    • 需求功能:feature_bug单号_邮箱前缀_n

基本命令

以下所有命令的开发分支号均以fixbug_12345_jingyang_1举例,合并均以合并到 develop 举例。

  • 切换分支:git checkout fixbug_12345_jingyang_1
  • 建立新分支并切换到该分支:git checkout –b fixbug_12345_jingyang_1
  • 查看所有分支:git branch -a
  • 推送分支到服务器:git push origin fixbug_12345_jingyang_1
  • 合并分支:git merge origin/fixbug_12345_jingyang_1
  • 删除分支:
    • 本地删除:git branch -d fixbug_12345_jingyang_1
    • 远程删除:git branch –r –d fixbug_12345_jingyang_1,删除后推送到服务器 git push origin :fixbug_12345_jingyang_1
  • 回退版本:git reset --hard HEAD^

基本思路

  • 开发人员分支:
    • release 稳定分支签出新分支;
    • 自测通过的分支会被合并到release 测试分支合并专员不会合并有冲突的分支);
    • 最终被合并的无冲突release 测试分支会合并到 develop 分支
  • 测试(QA)环境:测试develop 分支
    • 测试结束后重新合并一个release 测试分支,剔除所有测试不通过的分支;
    • 版本会合并到release 稳定分支
  • 生产(Prod)环境:进行冒烟测试
    • 测试结束后重新合并一个release 稳定分支,剔除所有测试不通过的分支;
    • 通过的release 稳定分支会同步到局方环境;
  • 局方 CUC 环境:运行最终的 release 稳定分支

git.png

注意事项

  • 合并release 测试分支过程中不进行冲突合并,遇到冲突即回退到上次提交;
  • 开发人员未被合并的分支,将在下一次另建分支合并;
  • release 稳定版应保留多个历史版本;
  • 应在版本被推送到局方环境之后再考虑删除开发人员分支。

场景

以下场景均假设有最近稳定版本release_stable_20171221_1,修改 bug 编号12345.

1、新建分支修改 bug

  • 拉取代码,确保获得最新版本:git pull
  • 签出release 稳定分支分支:git checkout release_stable_20171221_1
  • 在稳定分支基础上,新建自己的分支:git checkout -b fixbug_12345_jingyang_1
  • 在自己的分支上修改代码,并提交。

2、合并分支冲突

合并过程中遇到冲突的分支将不会被合并。由于项目文件较多,冲突并不常见。如果遇有冲突,开发人员应该自己解决。

以下设想了两种场景,但无论是哪种场景,开发人员都应该找到冲突原因,协商解决。

  • 如果今天还有合并分支的机会:找到冲突原因,协商解决,确保下次合并没有冲突;如果已经发布了新的稳定版本,合并稳定版本到自己的版本
  • 如果赶不上今天的合并:签出最新release 稳定分支,并合并到自己的分支中,确保代码是最新的。
  • 合并release 稳定分支到自己的分支:git merge release_stable_20171221_1 fixbug_12345_jingyang_1

3、测试人员测试不通过

  • 放弃之前的分支fixbug_12345_jingyang_1
  • 从最新的release 稳定分支签出新的分支:git checkout -b fixbug_12345_jingyang_2
  • 把前一个分支合并到新分支 git merge fixbug_12345_jingyang_1 fixbug_12345_jingyang_2,并重新开始修改。

4、局方测试不通过

局方不通过时,通常代码已经被合并到最新release 稳定分支中。

  • 从最新release 稳定分支签出新分支:git checkout -b fixbug_12345_jingyang_2
  • 在新分支上进行修改。

5、bug修改经历多日

记得在最终合并分支之前把最新的release 稳定分支合并到自己的分支。