Git-Flow 带你飞!

git glow

简单介绍

git-flow,是一个工具,是一种规范

Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践。Git Flow是一套使用Git进行源代码管理时的一套行为规范和简化部分Git操做的工具。git

http://www.ituring.com.cn/article/56870安全

因此说,git-flow 是一个规则,一种约定,一种规范,并非什么洪水猛兽, 是提升你使用git技术的一个进阶实践。app

git-flow 基于git自己的分支管理机制

因此,你必须先了解什么是git的分支(branch).请看图工具

由于时间关系,咱们假设你已经知道什么是branch, git-flow就是经过在一个项目里划分不一样的分支,来实现功能开发、bug修复、版本发布,以及开发过程当中的冲突处理等。测试

(若是以为这个描述有点绕,那么暂时不用理解它。)网站

git-flow把分支划分了几个类别

Master编码

就是平时咱们看到的master,项目的主要分支,对外的第一门面。 全部外人浏览你的项目,使用你的项目,第一时间都是看到master 你能够把它理解成 稳定无bug发布版 。(任什么时候候都ready to deploy 因此,git-flow 要求咱们不能在master下作开发。

Developspa

处于功能开发最前线的版本,查看develop分支就能知道下一个发布版有哪些功能了。 develop一开始是从master里分出来的,而且按期会合并到master里, 每一次合并到master,表示咱们完成了一个阶段的开发,产生一个稳定版。 一样的,develop下也不建议直接开发代码,develop表明的是已经开发好的功能 的回归版本(为何说回归?)

Feature插件

带着develop处的疑问,咱们在feature里为你解答。(有点长,别不看) feature的做用是为每个新功能从develop里建立出来的一个分支。 例如小明和小白分别作两个不相干的功能,就应该分别建立两个分支, 各自开发完之后,前后合并到develop里,这就叫作回归。 在这个过程里,小明小白不须要任何的沟通,分别并行地开发, git-flow能很好的处理好分支间并行开发的关系。 develop,则会在适当的时候,由合适的人,合并到master,做为下一个稳定版本。

Hotfix命令行

以上3种之外,还有一个很重要的类型,hotfix 它是用来修复紧急bug的,而bug一般是来自线上的, 因此hotfix分支是从master里建立出来的,而且,在bug修改好之后, 要同时合并到masterdevelop,这一点须要特别注意。

Release

release更多倾向与版本发布,项目上线前的一些全面测试以及上线准备。 一样也肩负着版本归档,回滚支持等。

开始使用

上面说到了,git-flow本质只是一个约定,因此你彻底能够在现行的git命令行里, 手动地完成所有git-flow操做,(手动建立、合并分支等), 重点是遵照git-flow规范,遵照命名约定和分支管理流程。

不过,git-flow早就有插件了。参看这个文章:

http://blog.163.com/tod_zhang/blog/static/1025522142012913113957679/

安装了这个插件,你的git就多了一系列方便的命令,好比:

git flow init

git flow feature start

git flow feature finish

等等。

不过,我以为这个插件仍是不够方便,我墙裂推荐大家都用 SourceTree 。

若是我要推荐一个git-flow客户端,我会推荐SourceTree。

若是我要推荐一个git客户端,那我仍是推荐SourceTree。

没错,SourceTree是专门为git-flow开发的git客户端,它涵盖了全部git自己的功能,

因此即便你不flow,你也可使用SourceTree来管理你的git项目。

官方网站:

https://www.sourcetreeapp.com/

至于如何下载、安装、/* 破解 */ ,这些内容就交给各位自行baidu了。

详细说明

那么下面咱们来实际操做一次,看看SourceTree如何帮助咱们使用git-flow

1.小明建立了一个新项目,就作 Demo,而且用SourceTree来打开它。若是这一步都 不会,你仍是别作开发了。

(一个新的项目,就不发图了)

2.小明为了使用git-flow,须要为git项目作一次初始化。

这些能够改动的地方,为了方便其余协做人员,仍是用默认好了。

3.初始化后,会自动切换到develop分支,接下来,小明要发一个新功能

注意那个 Git Flow 按钮,全部flow的功能都是从那里开始操做的。 在弹出的窗口里输入功能的名字便可,小明决定开发一个 test1 功能。

这时,左侧的菜单已经看到分支切换到test1了(有加粗效果)

4.而后小明开始了暗无天日的编码过程,千辛万苦后写了一行readme

接下来咱们演示一下如何提交修改

这个界面十分清晰地告诉你本地没有commit的代码,

固然了,这仅仅是commit到本地,由于这始终是git,咱们还须要push到远端。

能够在左侧看到,咱们暂存了多少个commit。 按照图上流程,选择你要push 的分支,你也能够一次选择多个, 在这里咱们先push 功能分支test1 。

5.提交过几回代码以后,小明认为功能已经开发完毕,能够回归到develop了

注意,这个时候,只有test1的代码是改变了的,develop仍是停留在小明建立feature时的状态。

为了安全起见,每次合并以前,最好pull一下develop,再次不表。(SourceTree拉取)

那么咱们如今把开发好的test1合并到develop:

整个界面很简单,就一个操做,实际上,它背后作了不少。 (@ -_-)

如无心外,test1里的改动会合并到develop里,而且会删除本地的test1,

而后把分支切换到develop,这时候咱们应该能看到整个test1期间的变更数目:

接下来你应该当即把develop的改动push到远端!

OK,这就是一个功能开发的完整流程,就算有多个功能在并行开发,

经过git-flow的协调,都能互不干扰地开发,最终所有做用到develop上。

相关文章
相关标签/搜索