Git flow的分支模型与及经常使用命令简单介绍
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的源代码能够通过下面链接下载:
或者,直接输入下面命令安装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 的分支模型中,有两个主分支master和develop,还有几个额外的分支来支持代码的版本号管理。下面先简要介绍一下这些分支的特点和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经常使用命令的介绍,你能够尽情享受它为我们管理代码带来的方便。
參考资料
Git flow的分支模型与及经常使用命令简单介绍的更多相关文章
- git flow开发分支管理模型
Git Flow 是什么 Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践.Git Flow是一套使用Git进行源代码管理时的一套行为规范和简化 ...
- Git Flow 代码版本控制模型
说到代码版本控制,推荐一下最新的Git.跟SVN相比,最大的区别是它在本地也保存了一个代码库,这样可以离线工作,首先将代码提交到本地仓库,联网之后再同步到服务器端.代码托管网站 Github 和 Bi ...
- 应用Git Flow—Git团队协作最佳实践
规范的Git使用 Git是一个很好的版本管理工具,不过相比于传统的版本管理工具,学习成本比较高. 实际开发中,如果团队成员比较多,开发迭代频繁,对Git的应用比较混乱,会产生很多不必要的冲突或者代码丢 ...
- Git Flow,Git团队协作最佳实践
规范的Git使用 Git是一个很好的版本管理工具,不过相比于传统的版本管理工具,学习成本比较高, 实际开发中,如果团队成员比较多,开发迭代频繁,对Git的应用比较混乱,会产生很多不必要的冲突或者代码丢 ...
- git flow分支管理
阅读目录 两种核心分支 三种临时分支 Git Flow流程示例代码 Git Flow工具 分支命名规范 总结 git flow是Vincent Driessen提出了一个分支管理的策略,非常值得借鉴. ...
- git flow的使用
简介 Gitflow工作流程围绕项目发布定义了严格的分支模型.尽管它比Feature Branch Workflow更复杂一些,但它也为管理更大规模的项目提供了坚实的框架. 与Feature Bran ...
- Windows环境下msysgit安装git flow
git flow是git的一个扩展集,它基于Vincent Driessen的分支模型,能够用来简化代码的版本号公布流程. 本文讲述怎样为msysgit安装git flow. 下载getopt.exe ...
- 多人协作解决方案,git flow的使用
简介 Gitflow工作流程围绕项目发布定义了严格的分支模型. 为不同的分支分配了非常明确的角色,并且定义了使用场景和用法.除了用于功能开发的分支,它还使用独立的分支进行发布前的准备.记录以及后期维护 ...
- 【git】之分支管理
git是鼓励开发者使用分支,尤其是在大型开发项目中,分支是非常重要的!这里简单介绍一下分支的操作! 1.创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前 ...
随机推荐
- VC++常见错误原因解析--error LNK2019: 无法解析的外部符号 "public: void __thiscall
根据个人遇到这个错误时的记录,原因可以分为一下几种: 原因一: 只是在.h里面声明了某个方法, 没有在cpp里面实现 . 具体讲,有时候在头文件中声明了需要的方法,确实忘记了在源文件中实现: 有时候在 ...
- CF816B Karen and Coffee
思路: 有点类似于区间修改点查询的树状数组. 实现: #include <iostream> #include <cstdio> using namespace std; ; ...
- FCC 基础JavaScript 练习2
1. 引号不是字符串中唯一的可以被转义字符.下面是常见的转义序列列表: \' 单引号 \" 双引号 \\ 反斜杠符 \n 换行符 \r 回车符 \t 制表符 \b 退格符 \f 换页符 ...
- vc++中 .H 头文件引用的顺序与符号关系
在使用 #include "math.h" 和 #include <math.h>时,引号 与尖括号的区别如下 此时math.h_1 在工程文件中 math.h_2 ...
- Spartan6系列之器件详细介绍、选型参考
1. 概述 Spartan6系列是一类低成本高容量的FPGA,采用45nm低功耗敷铜技术,能在功耗.性能.成本之间很好地平衡:Spartan6系列内部采用双寄存器.6输入的LUT,还有一系列 ...
- 史上最大型广告欺诈活动Methbot:黑客是如何每天赚到500万美元的
根据国外安全专家的最新报告,有一群黑客正在对美国的知名企业和媒体机构进行广告欺诈活动,而这群黑客每天都可以从中赚取三百万到五百万美金. 是的,你没看错,这绝对是人类历史上最牛X的恶意广告欺诈活动!不过 ...
- PHP 之QQ第三方登录
一.下载QQ SDK 下载地址:http://wiki.open.qq.com/wiki/mobile/SDK 二.配置SDK 三.具体代码 login.html <!DOCTYPE html& ...
- re模块,正则表达式
re模块 作用:取文本或者字符串内你所需要的东西 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功:一旦有匹配不成功的字符则匹配失败. ^叫做元字符,元 ...
- vue组件---组件注册
(1)组件名 在注册一个组件的时候,我们始终需要给它一个名字.比如在全局注册的时候我们已经看到了: Vue.component('my-component-name', { /* ... */ }) ...
- 01Struts 2
Struts 2 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交 ...