使用Git flow有一段时间了,在这里总结下什么是Git flow、它的优点是什么、我们为什么要用、如何使用及相关的命令和工具。
一、什么是Git flow
Git flow 是一个项目发布的分支模型,你可以把它理解为工厂的流水线,开发人员们按照这一规则开发模块(Feature分支)并组装(合并至Develop),通过验收(Code Review)后变为成品(合并至Master)。
二、使用Git flow有什么好处?
经过一段时间的使用,我总结出使用Git flow主要有以下几点优势:
- 各个开发人员在自己的分支开发,互不影响。
- 不需要花过多精力去维护分支,只要按照流程开发即可。
- 在分支树上可以看到每次合并都有哪些commit,清晰明了。
- 主分支始终处于可发布状态。
- 如果新发布版本出现问题,可以方便的通过tag回滚。
- 简化操作,通过Git flow命令轻松完成分支合并和添加tag等操作
三、我需要使用Git flow吗
做小型项目时,开发人员相对较少(1-3人),分支也比较简单,通常只有两个分支(Master和Dev),所有开发人员都在Dev分支开发,通过验收后合并至Master,Dev分支和Master分支差异不大,此时使用Git flow反而失去了灵活性,每次发布版本时打好tag即可。总结下来就是:人少,项目简单,沟通决定一个大家都认可的提交策略即可。
当项目复杂,开发人员较多时,仅有两个分支就不够用了。除了主分支(Master)和开发分支分支(Dev)外,你可能还需要以下几个分支:
- Feature分支:基于Dev分支,用于开发新功能,每个人员创建各自的Feature分支进行开发,开发完成之后合并至Dev分支
- Release分支:基于Dev分支创建的待发布分支,为上线发版做准备,此分支只做bug修复,不做任何功能上的改动,原则上尽量少改动。全部功能测试完毕后会被合并至Master分支和Dev分支,并且标记一个Tag。
- Hotfix分支:基于Master分支,用于修复线上Bug,开发完成之后合并至Master分支和Dev分支。
这样就有五个分支了,其中Feature和Hotfix是可能同时存在多个分支的,所以最终可能有5+个分支。
另外还会出现别的问题,例如:
- 即将发版时如何避免有小伙伴突然提交代码
- 如何避免有人将错误的代码合并到Master分支
- 修复bug后忘记合并到Master分支或Dev分支
- 发版后忘记打tag
以上几个问题通过沟通和监督的确是可以改善的,可是如果人多,这样难免耗费精力,这个时候使用Git flow的优势就可以体现出来了。
四、如何使用Git flow
简单来说,Git flow使用流程就三步:start、publish、finish。
对于新项目,首先需要初始化Git flow:
1 |
git flow init |
然后按照提示一步一步操作就好,全部使用默认项,直接按回车就可以。
初始化完成后就可以使用了,以开发新功能为例。
1.开启feature的工作流(从Dev分支创建feature-shop-car):
1 |
git flow feature start feature-shop-car |
开始编写代码:coding…
2.编写完成后提交代码(Push到远程仓库):
1 |
git flow feature publish feature-shop-car |
3.结束工作流(合并feature-shop-car至dev分支并删除本地和远程的feature-shop-car):
1 |
git flow feature finish feature-shop-car |
最后别忘了 git push –all && git push –tag
五、常用命令
git flow相关的命令都可以在help中找到
1 |
git flow help |
如果不熟悉命令行,可以使用免费的图形化工具:Sourcetree
文章评论 暂无评论
暂无评论