Git flow的分支模型与及常用命令简介

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

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

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

这样,便完成了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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-30 20:31:47

Git flow的分支模型与及常用命令简介的相关文章

Git flow的分支模型与及经常使用命令简单介绍

Git flow是git的一个扩展集,它基于Vincent Driessen 的分支模型,文章"A successful Git branching model"对这一分支模型进行了描写叙述.其示意图例如以下: 上图从左往右看,分别为 - 时间轴.从上往下时间在流逝 - feature分支(玫红).图上有两个feature分支,在这个分支上,进行功能特性的开发 - develop分支(黄色).git flow的主分支.feature分支和release分支都会将代码合并到此分支上 -

【git】git常用命令简介

使用Git也好长时间了,但一直没系统的学习过,现在总结以下工作中用到的,记录以下,以后忘记了可以来看看. 因为操作系统是Windows,所以将简单介绍一下通过git bash命令行的使用: 本文将不介绍git的安装和配置,主要说一下git几个常用命令的使用: (1)git help 查看常用命令 (2)git add  一方面可以将不在版本控制中的文件添加到git管理中,另一方面也用于添加已在版本控制中但是刚修改过的文件; 在这两种情况下, Git都会获得当前文件的快照并且把内容暂存(stage

git环境部署代码和liux常用命令

一.测试环境部署项目常用命令: 1.ssh 账号名@ip 端口号    #登录远程服务器 2.登录yun账号: su -yun          ccpdo su         #切换root权限 3.cd 项目所在路径               #进入项目部署的路径 git status         #查看git状态 git branch        #查看当前git关联分支 git branch -a |grep <分支名>                  #-a显示所有分支 

Neo4j数据库学习一:安装和数据类型常用命令简介

Neo4j数据库是图数据库 在数据库中,只有节点Nodes和关系Relationships Nodes用圆圈表示,Relationships用有向箭头表示 关系和节点都有属性(键值对) 安装3.3.7版本 注意:需要系统有jdk8配置,没有请先安装jdk8,楼主这里已经安装过jdk8 3.3.7下载地址: https://neo4j.com/download-thanks/?edition=community&release=3.3.7&flavour=unix&_ga=2.208

git常见操作--忽略文件以及常用命令【转】

转自:http://www.cnblogs.com/elfsundae/archive/2011/07/17/2099698.html References: http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide http://www.kernel.org/pub/software/scm/git/docs/ http://progit.org/book/ git安装.

Git 项目提交代码及一些常用命令

在dev_ysg分支 : git add . //把项目添加到仓库 git commit -m "test" // 提交加注释 git push //推到dev_ysg分支上去 git checkout dev //切换到dev分支 在dev分支提交的: git pull //拉取一下代码,在多人开发中 要随时更新dev分支的代码 防止冲突 保证修改的是最新的版本 git pull orgin dev // 多加一步 如果没有拉取到 加个orgin 目标 git merge dev_y

Cygwin下编译的程序不使用Cygwin.dll即可运行的命令 及常用命令简介

cc -mno-cygwin foo.c 1.$ ps PS的相关用法: QuoteUsage ps [-aefl] [-u uid]-f = show process uids, ppids-l = show process uids, ppids, pgids, winpids-u uid = list processes owned by uid-a, -e = show processes of all users-s = show process summary-W = show wi

Linux常用命令简介

Diff 逐行比较2个文件(最原始的) diff比较目录? -s 用不加参数的 diff? C不同 9,10 第九行,第十行 < 第一个文件 > 第二个文件 -u 统一的输出格式 对比 ---第一个文件 +++第二个文件 带空格的比较 带空格的比较 -c 使用上下文,输出格式 Diff -y 使用对比格式输出 同 sdiff效果一样 Sdiff 高级版的比较(更智能点) | 为不一样的地方 > 不一样的地方 空行 Vimdiff vim的diff模式,在diff的基础上提供了更高级的功能

GDB常用命令简介

1.启动调试程序 gdb 调试对象,例如gdb app 2.运行程序 run 或这简写为r 3.设置断点 有几种不同的方式 1)break line 2) break file:line 3) break function:offset 4.中断后继续执行 c 5.显示汇编代码 disassemble 或简写为 disas 结合不同参数达到不同的显示效果,几个经典的用法 disas /m func1 -- 显示函数func1的汇编 disas $pc,+10 -- 显示pc位置开始的10字节汇编