参考文档:图解git flow开发流程

1. 介绍

在实际生产开发的过程中,如果每个人都随意的创建分支,随意的提交 commit,必将导致整个 git 仓库非常的混乱,不易于团队协作。于是有了 git flow,最后形成了业内普遍采用的 git 工作流程,大家都在约定的流程内使用 git,使得团队协作效率大大提高‌。

gitflow 工作流程图

2. 常用分支

  • **生产分支(master)**‌
    master 分支是仓库的主分支,这个分支包含最近发布到生产环境的代码,最近发布的 Release, 这个分支只能从其他分支合并,不能在这个分支直接修改‌

  • **开发分支(develop)**‌
    这个分支是我们的主开发分支,包含所有要发布到下一个 Release 的代码,这个主要合并与其他分支,比如 Feature 分支‌

  • **发布分支(release)**‌
    当你需要发布一个新功能的时候,要基于 Develop 分支创建一个Release 分支,在 Release 分支测试并修复 bug,完成 release 后,把 release 合并到 master 和 develop 分支‌

  • **功能分支(feature)**‌
    feature 分支主要是用来开发一个新的功能,一旦开发完成,我们合并回 Develop 分支进入下一个 Release‌

  • **补丁分支(hotfix)**‌
    当我们在生产环境发现新的 Bug 时候,我们需要基于 master 分支创建一个 Hotfix 分支,然后在 Hotfix 分支上修复 bug,完成 Hotfix 后,我们要把 hotfix 分支合并回 Master 和 Develop 分支‌

3. 使用流程

当我们新建 git 仓库之后,默认会创建一个主分支也就是 master 分支,由于 master 分支是用于发布生产环境,所有必须保证 master 上代码的稳定性,所以我们不能直接在 master 分支上修改提交。我们要基于 master 分支创建一个 develop 分支,develop 分支用于保存开发好的相对稳定的功能,master 分支和 develop 分支是仓库的常驻分支,一直会保留在仓库中

master 和 develop 分支

当新的开发任务来了之后,就要编写代码了,我们尽量不要在 develop 分支上写代码,要保证 develop 分支的相对稳定,所以这时我要就要基于 develop 分支创建一个临时的开发分支,然后在开发分支上编写代码,等功能开发完之后我们再把开发分支合并到 develop 上

feature 的作用

新功能合并到 develop 分支之后,我们想把新功能发布到生产环境,首先基于 develop 分支创建 release 分支,然后在 release 分支测试完成之后,把 release 分别合并到 master 分支和 develop 分支

release 分支

release 分支合并到 master 分支之后,在 master 分支上打标签用于发布:

master 发布

我们把代码发布到了生产环境,用户在使用的时候给我们反馈了一个 bug,这时我们需要基于 master 分支创建一个 hotfix 分支,用于修复 bug,bug 修好之后,把 hotfix 分支分别合并到 master 分支和 develop 分支

hoxfix 流程

4. 使用方法

  • 初始化: git flow init
  • 开始新Feature: git flow feature start MYFEATURE
  • Publish一个Feature(也就是push到远程): git flow feature publish MYFEATURE
  • 获取Publish的Feature: git flow feature pull origin MYFEATURE
  • 完成一个Feature: git flow feature finish MYFEATURE
  • 开始一个Release: git flow release start RELEASE [BASE]
  • Publish一个Release: git flow release publish RELEASE
  • 发布Release: git flow release finish RELEASE 别忘了git push --tags
  • 开始一个Hotfix: git flow hotfix start VERSION [BASENAME]
  • 发布一个Hotfix: git flow hotfix finish VERSION