git项目分支管理
-
分支详解
- 主分支
主分支是所有开发活动的核心分支。所有的开发活动产生的输出物最终都会反映到主分支的代码中。主分支分为master分支和dev分支。
-
-
- master分支
-
master分支上存放的应该是随时可供在生产环境中部署的代码(Production Ready state)。当开发活动告一段落,产生了一份新的可供部署的代码时,master分支上的代码会被更新。同时,每一次更新,最好添加对应的版本号标签。
-
-
- dev分支
-
dev分支是保存当前最新开发成果的分支。日常的开发工作完成后可以合并到该分支,同时派生出release分支进行测试和bug修复。
-
- 辅助分支
辅助分支是用于组织解决特定问题的各种软件开发活动的分支。辅助分支主要用于组织软件新功能的并行开发、简化新功能开发代码的跟踪、辅助完成版本发布工作以及对生产代码的缺陷进行紧急修复工作。这些分支与主分支不同,通常只会在有限的时间范围内存在。
辅助分支包括:
- 用于开发新功能时所使用的feature分支;
- 用于测试人员测试和辅助版本发布的release分支;
- 用于紧急修正生产代码中的缺陷的hotfix分支;
- 用于开发人员bug修复的bugfix分支。
-
- feature分支
-
使用规范:
- 从dev分支派生
- 必须合并回dev分支
需要开发新功能的时候需要从dev主分支中创建feature分支,每个组都会有自己的feature分支。开发完成后,各组组长需要对组员代码进行review,同时通过前端页面对各项功能进行整体测试,没有问题后可自行合并回dev分支。
-
-
- release分支
-
使用规范:
- 从dev分支派生
- 必须合并回dev分支和master分支
开发阶段结束后从开发分支派生release分支,测试人员在该分支上进行测试并提交bug,开发人员基于该分支派生的bugfix分支进行bug修复,最终再合并回release分支。
release分支是为发布新的产品版本而设计的。在这个分支上准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等等)。通过在release分支上进行这些工作可以让dev分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期。
-
-
- hotfix分支
-
使用规范:
- 从master分支派生
- 必须合并回master分支和dev分支
hotfix分支与release分支十分相似:都可以产生一个新的可供在生产环境部署的软件版本。当生产环境中的软件遇到了异常情况或者发现了严重到必须立即修复的软件缺陷的时候,就需要从master分支上派生hotfix分支来组织代码的紧急修复工作。
这样做不会打断正在进行的dev分支的开发工作,能够让团队中负责新功能开发的人与负责代码紧急修复的人并行的开展工作。
-
-
- bugfix分支
-
使用规范:
- 需要从release分支派生
- 必须合并回release分支
每个组都会有自己的bugfix分支,组内成员必须在各自组所属的分支上进行bug修复与代码提交。最终合并回release分支的时候,各组组长需要对组内成员修改的bug以及提交的代码进行review,确保组内成员已经成功修复各自的bug,并且所提交的代码符合规则,不至于对项目整体代码产生影响。合并回release的代码一经发现有重大问题产生,将直接找各组组长进行解决。
由于release分支有权限限制,所以各组长合并的时候需要经过管理员的审批,以此来进一步规范代码的提交流程。
- 分支命名规范
- Tag(标签)命名:
服务英文名_tag_yyyyMMddHHmm
例如:***_tag_201904081341
- Master分支命名:
服务英文名_master
例如:***_master
- Develop分支命名:
服务英文名_dev
例如:***_dev
- Feature分支命名:
服务英文名_feature_yyyyMMddHHmm_组长名字全拼小写
例如:***_feature_201904081341_zhangsan
- Hotfix分支命名:
服务英文名_hotfix_yyyyMMddHHmm_bug号
Bug号如果有多个则可以对应多个hotfix版本;
Bug号如果连续可以用Bug号范围表示;
如果是遇到的新问题需要紧急修复,则可以添加后缀new
例如:
***_hotfix_201904081341_TEST-179
***_hotfix_201904081341_TEST-185
***_hotfix_201904081341_TEST-187~189
***_hotfix_201904081341_new
- Bugfix分支命名:
服务英文名_bugfix_yyyyMMddHHmm_组长名字全拼小写
例如:***_bugfix_201904081341_zhangsan
- Release分支命名:
服务英文名_release_yyyyMMddHHmm_组长名字全拼小写
例如:***_release_201904081341_zhangsan
- 分支流程图
说明:
Master分支(一个)可用于生产发布,演示环境发布。存放的是可稳定运行且无bug的代码版本。
Dev分支(一个)中永远是开发好的代码,开发过程需要在各组创建的Feature分支(例如:***_feature_20011904181215_zhangsan)上开发,开发完成后合并回Dev主分支,并将Feature分支删除。同时从dev分支创建对应的Release分支用于测试开发好的功能。
Feature分支(可以有多个)用于开发过程的管理
Release分支(可以有多个)测试完成后一定要合并回Master分支和Dev分支,同时删除Release分支。