参考文档:图解git flow开发流程
1. 介绍
在实际生产开发的过程中,如果每个人都随意的创建分支,随意的提交 commit,必将导致整个 git 仓库非常的混乱,不易于团队协作。于是有了 git flow,最后形成了业内普遍采用的 git 工作流程,大家都在约定的流程内使用 git,使得团队协作效率大大提高。
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 分支是仓库的常驻分支,一直会保留在仓库中
当新的开发任务来了之后,就要编写代码了,我们尽量不要在 develop 分支上写代码,要保证 develop 分支的相对稳定,所以这时我要就要基于 develop 分支创建一个临时的开发分支,然后在开发分支上编写代码,等功能开发完之后我们再把开发分支合并到 develop 上
新功能合并到 develop 分支之后,我们想把新功能发布到生产环境,首先基于 develop 分支创建 release 分支,然后在 release 分支测试完成之后,把 release 分别合并到 master 分支和 develop 分支
release 分支合并到 master 分支之后,在 master 分支上打标签用于发布:
我们把代码发布到了生产环境,用户在使用的时候给我们反馈了一个 bug,这时我们需要基于 master 分支创建一个 hotfix 分支,用于修复 bug,bug 修好之后,把 hotfix 分支分别合并到 master 分支和 develop 分支
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