GitFlow
GitFlow 协同工作流
其实GitFlow并非什么技术,而是一种代码开发合并管理流程的思维模式或者是管理方法。大家一起开发的一种软约定。
GitFlow中分支角色们

Master 分支: 稳定版本代码分支,用作发布环境,上面的每次提交都是可以发布的,这个分支只能从其他分支合并,不能在这个分支直接修改。
Developer 分支: 主开发分支,包含所有要发布到下一个Release的代码, 一旦Feture分支内功能开发完成就将Feture中的代码合并到Developer分支中,合并完成后,删除该功能分支。这个分支对应的是集成测试环境。
Feature 分支: 功能分支,用于开发新功能(需求),一旦开发完成,我们合并回Develop分支进入下一个Release。
Release 分支:预发分支,做发布前的准备工作,对应的是预发环境。这个分支可以确保我们开发继续向前,不会因为要发布而被停滞住,当你需要发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release后。一旦Release分支达到了可发布的状态,我们需要把Release分支同时向Master,Developer分支上合并,保持代码的一致性,然后把Release分支删除。
Hotfix 分支: 线上bug修缮用的分支,每次修改线上代码的bug时都要用hotfix来维护,完成后向Developer和Master同时合并。所以Hotfix的改动会进入下一个Release,完成后删除分支。
Git Flow 命令示例
创建 Devlop
1 | git branch develop |
开始 Feature
1 | # 通过develop新建feaeure分支 |
完成 Feature
1 | git pull origin develop |
开始 Release
1 | git checkout -b release-0.1.0 develop |
完成 Release
1 | git checkout master |
开始 Hotfix
1 | git checkout -b hotfix-0.1.1 master |
完成 Hotfix
1 | git checkout master |
GitFlow的优点
- 适应场景多
- 不影响开发进度
- 分支使用相对有条理
- 确保线上的版本稳定
GitFlow的缺点
GitFlow并不是完美无缺的,这只是一种管理思维,以下是它的一些缺点。
1.因为分支态度,所以会出现git log混乱的局面:主要是因为git-flow使用git merge –no-ff来合并分支,在git-flow这种多分支的环境下会让整个项目的log变的非常混乱。

对于整个中情况我们可以:只有feature合并到developer分支时, 使用-no-ff参数,其他的合并都不使用–no-ff
什么是git merge –no-ff
1 | --no-ff指的是强行关闭fast-forward方式。 |
2.同时维护Master和Developer两个分支很多时候是没必要的,因为在很多场景下Master中的内容和Developer中的内容是差不多的。尤其当你想回滚某些人的提交时,你就会发现这事似乎有点儿不好干了。而且在工作过程中,你会来来回回地切换工作的分支,有时候一不小心没有切换,就提交到了不正确的分支上,你还要回滚和重新提交,等等。