使用Git flow有一段时间了,在这里总结下什么是Git flow、它的优点是什么、我们为什么要用、如何使用及相关的命令和工具。

一、什么是Git flow

Git flow 是一个项目发布的分支模型,你可以把它理解为工厂的流水线,开发人员们按照这一规则开发模块(Feature分支)并组装(合并至Develop),通过验收(Code Review)后变为成品(合并至Master)。

 

二、使用Git flow有什么好处?

经过一段时间的使用,我总结出使用Git flow主要有以下几点优势:

  1. 各个开发人员在自己的分支开发,互不影响。
  2. 不需要花过多精力去维护分支,只要按照流程开发即可。
  3. 在分支树上可以看到每次合并都有哪些commit,清晰明了。
  4. 主分支始终处于可发布状态。
  5. 如果新发布版本出现问题,可以方便的通过tag回滚。
  6. 简化操作,通过Git flow命令轻松完成分支合并和添加tag等操作

 

三、我需要使用Git flow吗

做小型项目时,开发人员相对较少(1-3人),分支也比较简单,通常只有两个分支(Master和Dev),所有开发人员都在Dev分支开发,通过验收后合并至Master,Dev分支和Master分支差异不大,此时使用Git flow反而失去了灵活性,每次发布版本时打好tag即可。总结下来就是:人少,项目简单,沟通决定一个大家都认可的提交策略即可。

当项目复杂,开发人员较多时,仅有两个分支就不够用了。除了主分支(Master)和开发分支分支(Dev)外,你可能还需要以下几个分支:

  1. Feature分支:基于Dev分支,用于开发新功能,每个人员创建各自的Feature分支进行开发,开发完成之后合并至Dev分支
  2. Release分支:基于Dev分支创建的待发布分支,为上线发版做准备,此分支只做bug修复,不做任何功能上的改动,原则上尽量少改动。全部功能测试完毕后会被合并至Master分支和Dev分支,并且标记一个Tag。
  3. Hotfix分支:基于Master分支,用于修复线上Bug,开发完成之后合并至Master分支和Dev分支。

这样就有五个分支了,其中Feature和Hotfix是可能同时存在多个分支的,所以最终可能有5+个分支。

另外还会出现别的问题,例如:

  1. 即将发版时如何避免有小伙伴突然提交代码
  2. 如何避免有人将错误的代码合并到Master分支
  3. 修复bug后忘记合并到Master分支或Dev分支
  4. 发版后忘记打tag

以上几个问题通过沟通和监督的确是可以改善的,可是如果人多,这样难免耗费精力,这个时候使用Git flow的优势就可以体现出来了。

四、如何使用Git flow

简单来说,Git flow使用流程就三步:start、publish、finish。

对于新项目,首先需要初始化Git flow:

然后按照提示一步一步操作就好,全部使用默认项,直接按回车就可以。

初始化完成后就可以使用了,以开发新功能为例。

1.开启feature的工作流(从Dev分支创建feature-shop-car):

开始编写代码:coding…

2.编写完成后提交代码(Push到远程仓库):

3.结束工作流(合并feature-shop-car至dev分支并删除本地和远程的feature-shop-car):

最后别忘了 git push –all && git push –tag

五、常用命令

git flow相关的命令都可以在help中找到

如果不熟悉命令行,可以使用免费的图形化工具:Sourcetree

六、Git flow流程图: