前言
GitFlow
是一个优秀的分支模型,可在项目实施中直接应用。但它并不是万能的,其更适用于有多版本并存需求且具有一定规模的项目,项目组应该根据项目具体情况灵活的优化流程,或选择更精简的分支模型,如GitHub Flow
。下面对GitFlow
做详细说明。
GitFlow示意图:
分支规则
分支 | 含义 | 起始 | 终止 |
---|---|---|---|
master | 正式发布分支 该分支代码通过其他分支合并,不允许直接提交代码到该分支 | git init | – |
hotfix | 线上bug紧急修复分支 | Branch from master | Merge to master&develop |
release-* | 预发布分支 该分支只允许进行bug修复,测试人员在该分支进行测试 | Branch from develop | Merge to master&develop |
develop | 开发集成分支 | Branch from master | – |
feature-* | 新功能开发分支 | Branch from develop |
主分支
每个仓库必须要存在 master 、 develop 两个主分⽀,并且 develop 源于 master 。
- master 与 develop 分⽀必须要通过 branch permissions 进⾏保护,不允许直接 push,只能从其他分支merge
- master 分⽀⽤于版本发布,发布的版本必须通过 git tag 打上版本号
- develop 分⽀⽤于开发集成,所有的功能分⽀必须 checkout 于此分⽀,例如在develop分支下新建分支:
git checkout -b feature-modul
功能分支
每位开发者对负责的功能模块创建⼀个对应的 feature 分⽀进⾏开发,最终 merge 到 develop 。
- feature 分⽀必须 checkout 于 develop
- feature 分⽀只允许 merge 到 develop
预发布分⽀
当需要发布⼀个版本到 master 分⽀时,必须要从 develop 分⽀ checkout 出⼀个新的 release 分⽀(如release-20200312)。并进⾏测试验证,测试通过后 merge 到 master 。
- 此分⽀只允许修bug
- 如果有修复bug,那么同时也要 merge 到 develop
Bug修复分⽀
发布版本中的分⽀发现 bug 时,必须要从 master 分⽀ checkout 出⼀个新的 hotfix 分⽀(如hotfix-20200314)。 bug 修复后 hotfix 分⽀要分别 merge 到 develop 和 master 。
- 只允许 checkout 于 master
- 要分别 merge 到 develop 和 master