GitFlow工作流定义了一个围绕项目发布的严格分支模型,它为不同的分支分配了明确的角色,并定义分支之间何时以及如何进行交互。是一套规范、易于管理的git使用流程,解决git分支众多,管理不便的问题。
【当然,我们自己在做git工作流程管理的时候,也可以制定一套适合自身项目的、完善的分支管理方式。】
GitFlow的分支管理流程图
图片来源 A Successful Git Branching Model
GitFlow 设计的主要分支为 master 、 develop;在主要分支之外,开发团队可以使用各种支持分支来协助团队完成项目的开发,这些分支只是为了完成某些特定的功能或者特性,在完成任务并合并到develop分支之后,就可以删除。这些分支的不同类型分为feature分支、release分支、hotfix分。
1.功能(feature)分支:可以从develop分支创建,必须合并回develop分支;
分支命名约定:没有要求,但不要和主要分支(master、develop)或者发布分支(release-*)或修补分支(hotfix-*)冲突。例如 feature- save-department.
创建功能分支命令如下:
# 从develop分支创建一个新的分支myfeature ,并切换到myfeature分支上
$ git checkout -b myfeature develop
合并功能分支到develop分支上
# 切换到develop分支上
$ git checkout develop
# 合并myfeature分支的代码
$ git merge --no-ff myfeature
# 删除myfeature分支
$ git branch -d myfeature
# 提交develop分支
$ git push origin develop
注:合并建议使用 git merge --no-ff ,方便读取全部的提交和合并日志。
2.发布(release)分支:可以从develop分支创建,必须合并回develop分支和master分支;
分支命名约定为 release-*(例如release-v1.0.2);
release分支只可以进行bug修复、文档生成等面向发布的任务,不能再添加新的功能。发布任务完成之后,需要将release分支合并到master分支上,并根据版本号为master分支添加tag,并将分支的修改合并到develop分支。
3.修补程序(hotfix)分支:master分支(此时的程序可能已经在生产环境中运行)存在需要修复的bug的时候,可以从master创建修补分支,修复bug之后,需要将修补分支合并回master和develop分支。合并回master之后,需要更新版本号。
命名规则为hotfix-*。命名中可以带入问题简述,如 hotfix-v1.0.2-username-not-shown。