Git Flow
Question
- 当我开发某个功能到一半的时候,有人突然给我安排了一个新的紧急任务,我该怎么开始这个任务,而不影响现在的?
- 当我代码写好了的时候,如何发布?
- 当我发布后,代码出问题了,如何快速修复?
- 以上的情况,还要求修复后,还要包含之后开发的所有代码?
显然,不光代码有代码规范,代码的管理和协同同样需要一个清晰的流程和规范,由此,行业内的通用解决方案是Git Flow。
What Git Flow
- Git Flow是一套基于git的工作流程,这个工作流程围绕着project的发布(release)定义了一个严格的如何建立分支的模型。
- 每一个特性(feature)的开发并不直接在主干上开发,而是在分支上开发,分支开发完毕后再合并到主干上。
Why
- 在多组员,多项目等环境进行协同工作时,如果没有统一规范、统一流程,则会导致额外的工作量,甚至会做无用功。所以要减少版本冲突,减轻不必要的工作,就需要规范化的工作流程。
- 好处:
- 还处于半成品状态的feature不会影响到主干
- 各个开发人员之间做自己的分支,互不干扰
- 主干永远处于可编译、可运行的状态
- GitFlow则在这个基础上更进一步,规定了如何建立、合并分支,如何发布,如何维护历史版本等工作流程。
explain in detail
- 图一
- 简述
- 蓝色圆点所在的线为我们源码的主线(master)。
- 蓝色方形指向的节点就是每一个发布版本的标签(tag)。
- 紫色圆点所在的线为主要分支线(develop)。
- 橙色圆点所在的线为新功能开发分支线(feature)。
- 绿色圆点所在的线为新版本发布线(release)。
- 红色圆点所在的线为发布版本bug修复线(hotfix)。
- 简述
- 图二
名称 | 解释 |
---|---|
master | 这个分支最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改 |
Develop | 这个分支是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支 |
Feature | 这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release |
Release | 当你需要一个发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release后,我们合并到Master和Develop分支 |
Hotfix | 当我们在Production发现新的Bug时候,我们需要创建一个Hotfix, 完成Hotfix后,我们合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release. |
支持Git Flow的图形化工具 - - Source Tree
打开界面演示
想了解更多请点击这里