Git Flow简介

Git Flow是什么?

Git Flow是一套基于git的工做流程,这个工做流程围绕着project的发布(release)定义了一个严格的如何创建分支的模型。git

Git建分支是很是cheap的,咱们能够任意创建分支,对任意分支再分支,分支开发完后再合并。github

比较推荐、多见的作法是特性驱动(Feature Driven)的创建分支法(Feature Branch Workflow)。bash

简而言之就是每个特性(feature)的开发并不直接在主干上开发,而是在分支上开发,分支开发完毕后再合并到主干上。服务器

这样作的好处是工具

  1. 还处于半成品状态的feature不会影响到主干post

  2. 各个开发人员之间作本身的分支,互不干扰测试

  3. 主干永远处于可编译、可运行的状态spa

GitFlow则在这个基础上更进一步,规定了如何创建、合并分支,如何发布,如何维护历史版本等工做流程。code

master和develop分支

图片描述

master分支只存放历史发布(release)版本的源代码。各个版本经过tag来标记。上图里的v0.1和v0.2就是tag。blog

develop分支则用来整合各个feature分支。开发中的版本的源代码存放在这里。

feature分支

图片描述

每个特性(feature)都必须在本身的分支里开发,feature分支派生自develop分支。

当feature开发完毕后,要合并回develop分支。feature分支永远不会和master分支打交道。

release分支

图片描述

release分支不是一个放正式发布产品的分支,你能够将它理解为“待发布”分支。

咱们用这个分支干全部和发布有关的事情,好比:

  1. 把这个分支打包给测试人员测试

  2. 在这个分支里修复bug

  3. 编写发布文档

因此在这个分支里面绝对不会添加新的特性

当和发布相关的工做都完成后,release分支合并回develop和master分支。

单独搞一个release分支的好处是,当一个团队在作发布相关的工做时,另外一个团队则能够接着开发下一版本的东西。

hotfix分支

图片描述

一个项目发布后或多或少确定会有一些bug存在,而bug的修复工做并不适合在develop上作,这是由于

  1. develop分支上包含还未验证过的feature

  2. 用户未必须要develop上的feature

  3. develop还不能立刻发布,而客户急需这个bug的修复。

这时就须要新建hotfix分支,hotfix分支派生自master分支,仅仅用于修复bug,当bug修复完毕后,立刻回归到master分支,而后发布一个新版本,好比v0.1.1。

同时hotfix也要合并回develop分支,这样develop分支就能享受到bug修复的好处了。

配套工具

Git Flow不单单是一种规范,还提供了一套方便的工具。大大简化了执行Git Flow的过程。

安装

OSX
$ brew install git-flow
Debian/Ubuntu Linux
$ apt-get install git-flow
Windows(cygwin)
$ wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

Initialize

对一个git仓库配置一下git flow。主要是一些命名规范,好比feature分支的前缀,hotfix分支的前缀等。通常用默认值就行。

git flow init

Feature

Start a new feature

从develop开启一个新的分支

git flow feature start MYFEATURE

这个命令会从develop分出一个分支,而后切换到这个分支上面。

Finish up a feature

一个feature分支开发完毕后,要作如下事情:

  • 把 MYFEATURE 合并到 develop

  • 把这个分支干掉

  • 切换回develop分支

git flow feature finish FEATURE_NAME

Publish a feature

若是你想让别人和你一块儿开发MYFEATURE分支,那就把这个分支push到服务器上

git flow feature publish MYFEATURE

Getting a published feature

得到一个别人publish到服务器上的feature分支

git flow feature pull origin MYFEATURE

Release

Start a release

建立一个release分支,派生自develop分支。

git flow release start RELEASE

Publish a release

git flow release publish RELEASE

Finish up a release

一个release分支结束后,须要作如下工做:

  • 把release分支合并回master

  • 给本次发布打tag

  • 同时把release分支合并回develop

  • 干掉release分支

git flow release finish RELEASE

最后不要忘记把tag push到服务器git push --tags

Hotfix

git flow hotfix start

开启一个hotfix分支

git flow hotfix start VERSION

Finish a hotfix

结束一个hotfix分支,和release同样,同时合并回develop和master

git flow hotfix finish VERSION

参考资料

相关文章
相关标签/搜索