命名规范
- master 分支:
master
; - develop 分支:
develop
; - release 稳定分支:
release_stable_YYYYMMDD_n
,YYYYMMDD 为当前日期(年月日),n 为递增序列号; - release 测试分支:
release_nightly_YYYYMMDD_n
,YYYYMMDD 为当前日期(年月日),n 为递增序列号; - 开发人员版分支:bug单号为 bugfree 编号,n 为递增序列号。
- 修复 bug:
fixbug_bug单号_邮箱前缀_n
; - 需求功能:
feature_bug单号_邮箱前缀_n
。
- 修复 bug:
基本命令
以下所有命令的开发分支号均以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 稳定分支
。
注意事项
- 合并
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 稳定分支
合并到自己的分支。