git flow

来源:互联网 发布:智慧家庭软件下载 编辑:程序博客网 时间:2024/05/01 03:50

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 安装及 简单命令

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

  1. git flow init

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

  1. No branches exist yet. Base branches must be created now
  2. Branch name for production releases: [master]
  3. Branch name for next release development: [develop]
  4. How to name your supporting branch prefixes?
  5. Feature branches? [feature/]
  6. Release branches? [release/]
  7. Hotfix branches? [hotfix/]
  8. Support branches? [support/]
  9. 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分支,可以使用以下命令:

  1. git flow feature start test

  执行以下命令后,feature/test分支会被创建。
  当特性开发完毕,需要将此分支合并到develop分支,可以使用以下命令实现:

  1. git flow feature finish test

  上面的命令会将feature/test分支的内容merge到develop分支,并将feature/test分支删除。
  feature分支只是存在于本地仓库,如果需要多个人共同开发此特性,也可以将feature分支推送到过程仓库。

  1. 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分支:

  1. git flow release start v.1.0

  执行过完上面的命令,release分支release/v.1.0会被创建出来 ,并且切换到该分支。
当完成release分支功能的完善或者bug的修复后,执行以下命令来完成release分支:

  1. 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分支:

  1. git flow hotfix start v.1.0

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

  1. 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常用命令的介绍,你可以尽情享受它为我们管理代码带来的方便。

0 0