Git flow是git的一个扩展集,它基于Vincent Driessen 的分支模型,文章“A successful Git branching model”对这一分支模型进行了描写叙述。其示意图例如以下:

上图从左往右看,分别为

- 时间轴。从上往下时间在流逝

- feature分支(玫红)。图上有两个feature分支,在这个分支上,进行功能特性的开发

- develop分支(黄色)。git flow的主分支。feature分支和release分支都会将代码合并到此分支上

- release分支(绿色),总是基于develop分支创建,最后合并到develop分支和master分支

- hotfix分支(红色),总是基于master分支创建,最后合并到master分支和develop分支

- master分支(蓝色),git flow的主分支,在开发的整个阶段一直存在,平时不在此分支开发,因此代码比較稳定,能够用来公布

Git flow的源代码能够通过下面链接下载:

https://github.com/nvie/gitflow

或者,直接输入下面命令安装git flow:

apt-get install git-flow

在Windows平台下安装git flow,能够參考《Windows环境下msysgit安装git flow》

我们能够通过下面命令来初始化一个现有的git本地仓库。

git flow init

接着回答几个关于分支的问题。不用操心。使用默认值就可以。直接按回车键。

No branches exist yet. Base branches must be created now

Branch name for production releases: [master]

Branch name for “next release” development: [develop]

How to name your supporting branch prefixes?

Feature branches? [feature/]

Release branches? [release/]

Hotfix branches? [hotfix/]

Support branches?

[support/]

Version tag prefix?

[]

这样,便完毕了git flow的初始化工作。

在git flow 的分支模型中,有两个主分支masterdevelop,还有几个额外的分支来支持代码的版本号管理。下面先简要介绍一下这些分支的特点和git flow经常使用命令的使用。

1. Master

master分支仅仅有一个。

master分支上的代码总是稳定的。随时能够公布出去。

平时一般不在master分支上操作。当release分支和hotfix分支合并代码到master分支上时,master上代码才更新。

当仓库创建时,master分支会自己创建。

2. Develop

develop分支仅仅有一个。

新特性的开发是基于develop分支的,但不直接在develop分支上开发,特性的开发是在feature分支上进行。

当develop分支上的特性足够多以至于能够进行新版本号的公布时。能够创建release分支的。

3. Feature

能够同一时候存在多个feature分支。新特性的开发正是在此分支上面。

能够对每一个新特性创建一个新的feature分支,当该特性开发完毕,将此feature分支合并到develop分支。

创建一个新的feature分支。能够使用下面命令:

git flow feature start test

运行下面命令后,feature/test分支会被创建。

当特性开发完毕,须要将此分支合并到develop分支。能够使用下面命令实现:

git flow feature finish test

上面的命令会将feature/test分支的内容merge到develop分支,并将feature/test分支删除。

feature分支仅仅是存在于本地仓库,假设须要多个人共同开发此特性。也能够将feature分支推送到过程仓库。

git flow feature publish test

feature 分支的生命周期持续到特性的开发完毕,当完毕特性的开发。你能够使用git的分支管理命令将此feature分支删除。

4. Release

当完毕了特性的开发。而且将feature分支上的内容merge到develop分支上,这时能够開始着手准备新版本号的公布。release分支正是作为公布而开设的分支。

release分支基于develop分支,在同一时间仅仅有一个release分支,其生命周期较短。仅仅是为了公布而使用。这意味着,在release分支上,仅仅是进行较少代码改动,比方bug的修复,原有功能的完好等。

不同意在release分支添加大的功能。由于这样会导致release分支的不稳定,不利于公布的进行。

当release分支(比如,v.1.0)被创建出来后,develop分支可能正准备还有一版本号(比如。v.2.0),因此,当release分支merge回develop分支时,可能会出现冲突,须要手工解决冲突才干继续merge。

通过下面命令来创建release分支:

git flow release start v.1.0

运行过完上面的命令。release分支release/v.1.0会被创建出来 ,而且切换到该分支。

当完毕release分支功能的完好或者bug的修复后,运行下面命令来完毕release分支:

git flow release finish v.1.0

这个命令会运行下面的操作:

  • 分支release/v.1.0 merge回master分支
  • 使用release/v.1.0分支名称打tag
  • 分支release/v.1.0 merge回develop分支
  • 删除release/v.1.0分支

5. Hotfix

当发现master分支出现一个须要紧急修复的bug,能够使用hotfix分支。hotfix分支基于master分支。用来修复bug,当完毕bug的修复工作后,须要将其merge回master分支。

同一时间仅仅有一个hotfix分支,其生命周期较短。

能够使用下面命令来创建hotfix分支:

git flow hotfix start v.1.0

使用下面命令来结束hotfix分支的生命周期:

git flow hotfix finish v.1.0

这句命令会将hotfix分支merge到master分支和release分支,并删除该hotfix分支。

值得注意的是。假设bug修复时。正存在着release分支,那么hotfix分支会merge到release分支,而不是develop分支。

能够使用下图来说明git flow这几分支的经常使用命令:

在开发的整个阶段。仅仅有两个主分支贯穿于整个开发阶段:master分支和develop分支。

功能特性的开发以及bug的修复都通过创建新的分支来实现,且这些分支的生命周期都比較短暂。

开发成员之间的开发能够做到尽量不干扰对方。这保证了代码的稳定性。

git flow的分支模型简单清晰。易于使用。通过本文对git flow经常使用命令的介绍,你能够尽情享受它为我们管理代码带来的方便。

參考资料

  1. http://internetdevels.com/blog/git-flow-model
  2. http://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html
  3. http://www.berlinix.com/it/gitflow.php

Git flow的分支模型与及经常使用命令简单介绍的更多相关文章

  1. git flow开发分支管理模型

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

  2. Git Flow 代码版本控制模型

    说到代码版本控制,推荐一下最新的Git.跟SVN相比,最大的区别是它在本地也保存了一个代码库,这样可以离线工作,首先将代码提交到本地仓库,联网之后再同步到服务器端.代码托管网站 Github 和 Bi ...

  3. 应用Git Flow—Git团队协作最佳实践

    规范的Git使用 Git是一个很好的版本管理工具,不过相比于传统的版本管理工具,学习成本比较高. 实际开发中,如果团队成员比较多,开发迭代频繁,对Git的应用比较混乱,会产生很多不必要的冲突或者代码丢 ...

  4. Git Flow,Git团队协作最佳实践

    规范的Git使用 Git是一个很好的版本管理工具,不过相比于传统的版本管理工具,学习成本比较高, 实际开发中,如果团队成员比较多,开发迭代频繁,对Git的应用比较混乱,会产生很多不必要的冲突或者代码丢 ...

  5. git flow分支管理

    阅读目录 两种核心分支 三种临时分支 Git Flow流程示例代码 Git Flow工具 分支命名规范 总结 git flow是Vincent Driessen提出了一个分支管理的策略,非常值得借鉴. ...

  6. git flow的使用

    简介 Gitflow工作流程围绕项目发布定义了严格的分支模型.尽管它比Feature Branch Workflow更复杂一些,但它也为管理更大规模的项目提供了坚实的框架. 与Feature Bran ...

  7. Windows环境下msysgit安装git flow

    git flow是git的一个扩展集,它基于Vincent Driessen的分支模型,能够用来简化代码的版本号公布流程. 本文讲述怎样为msysgit安装git flow. 下载getopt.exe ...

  8. 多人协作解决方案,git flow的使用

    简介 Gitflow工作流程围绕项目发布定义了严格的分支模型. 为不同的分支分配了非常明确的角色,并且定义了使用场景和用法.除了用于功能开发的分支,它还使用独立的分支进行发布前的准备.记录以及后期维护 ...

  9. 【git】之分支管理

    git是鼓励开发者使用分支,尤其是在大型开发项目中,分支是非常重要的!这里简单介绍一下分支的操作! 1.创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前 ...

随机推荐

  1. 专题二:HTTP协议详解

    我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网址时就是再向服务器发送一个HTTP请求,此时就使用了应用层的HTTP协议,在上一个专题我们简单介绍了网络协议的知识,主要是为了后 ...

  2. System.AppDomain类详解(一)

    AppDomain是CLR(Common Language Runtime:公共语言运行库),它可以加载Assembly.创建对象以及执行程序. AppDomain是CLR实现代码隔离的基本机制. 每 ...

  3. 2017-12-04HTML table布局

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. CentOS6.6从头到尾部署nginx与tomcat多实例

    前提条件: 1.需要一个全新的centos系统(本文中用到是centos6.6) 2.vmware虚拟机 3.vmware下安装centos系统,以NAT方式与宿主机相连 4.在centos系统中pi ...

  5. CommHelper

    18位流水号: public static string GenerateTransId(int i) { string transId = DateTime.Now.ToString("y ...

  6. 3星|《未来公司》:Uber简史

    未来公司(卡兰尼克和他的Uber帝国)(精) 从Uber创始人卡兰尼克的角度讲的Uber简史,截止到2017年.书中有不少Uber的负面新闻,比国内的同类书要好. 基本是流水账.想了解这家公司的历史, ...

  7. 10Java Server Pages 隐式对象

    Java Server Pages 隐式对象 JSP隐式对象是Web容器加载的一组类的实例,它不像一般的Java对象那样用“new”去获取实例,而是可以直接在JSP页面使用的对象.JSP提供的隐式对象 ...

  8. java.lang.NoSuchFieldError: DEFAULT_INCOMPATIBLE_IMPROVEMENTS

    解决方案: 启动类上加@EnableAutoConfiguration(exclude = { FreeMarkerAutoConfiguration.class }) 或者在配置文件添加spring ...

  9. 如何同步iframe与嵌入内容的高度

    最近频繁的做一些通过iframe在a页面嵌入b页面需求.总结下来,有以下问题需要解决 1.如何同步iframe与嵌入内容的高度 2.将b页面载入到a页面后,如何隐藏掉b页面上的元素,如左导航,顶部导航 ...

  10. QQ浏览器占用资源真的大

    Edge 和 QQ浏览器 对比 正常情况下: QQ浏览器 看1个直播频道 ,CPU就几乎是在90% usage 范围 ,看2 个 就非常卡 下面就是对比图 Edge 我个人觉得 Edge 比 QQ好用 ...