Git 是用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。
当前各大公司对软件源码的版本管理都采用git来管理,因此git的使用必不可少,在一些项目开发中,可能存在git使用流程的不合理,导致代码版本管理混乱,容易造成代码冲突,甚至带来线上bug等,因此一旦当我们的项目在git管理后仍然存在很多问题的时候,就可以考虑采用git flow的标准流程。
什么是git flow
Git Flow 其实是一种规范化分支管理模型的方案。他的出现是在Vincent Driessen 曾经写过一篇博文,题为“A successful Git branching model”。
我们先来看一下Vincent Driessen提出的git flow流程图
上图中,有几个分支,他们的作用如下:
- master 分支:用于生产环境的分支,这个分支只能从其他分支合并代码,不允许直接修改。
- hotfix 分支:当生产环境发现线上的 bug 的时候,则需要创建一个 hotfix,修复bug完成 后,将hitfix分支合并回 master 和 develop 分支。
- release 分支:用于测试环境分支,当develop 分支完成后,则将develop合并到 release 分支提测。测试中的 bug ,在release分支修复,bug修复通过后,再合并release分支到 master 和 develop 分支。
- develop 分支:开发环境分支,用于拉出一个一个 feture 分支进行新功能开发。
- feature 分支:该分支主要是用来开发一个新的功能,一般从 develop 分支拉取,开发完成合并到 develop。
那么git flow怎么使用呢?
git flow中master 和 develop 分支是长期存在的分支,都需要保证稳定性。
如果有新功能需要开发,则基于 develop 拉取 feature 分支进行开发,开发完成后,合并到 develop 分支,并删除 feature 分支。
功能开发完成后,进行提测,基于 develop 分支拉去 release 进行提测。如果提测中发现的 bug,在 release 分支进行修复,测试通过后,将 release 分支合并到 develop 分支和 master 分支。
最后在 master 分支上打标签用于发布,并删除 release 分支。若后续线上发现 bug,则基于 master 拉取 hotfix 分支,问题在 hotfix 分支上修复完成后,将 hotfix 分支合并到 master 分支和 develop 分支。
git flow工具
由于上述过程非常标准,同时又有一定的繁琐,如果团队成员都非常遵守约定,可以做一些调整和简化;如果有些团队成员约定性不是很强,我们可以采用git flow工具来强制项目使用git flow标准流程。
git flow工具:http://danielkummer.github.io/git-flow-cheatsheet/
大家可以按照官网地址进行操作,与git 无异,本文只做简单介绍,git flow中的命令如下图
命令汇总如下:
最后,适合的才是最好的,不要任何时候都直接采用git flow,毕竟流程还是相对复杂一些的。