Git flow分支管理详解

目录

一、Git Flow 分支管理思想介绍

二、Git  flow 分支管理的图解

三、Git flow分支功能介绍

1. 核心分支(两种)

2. 临时分支(三种)

四、 Git Flow流程示例代码

五、分支命名规范


一、Git Flow 分支管理思想介绍

Git flow是Vincent Driessen提出的一种分支管理策略,通过git flow的分支管理思想,可以使得项目开发中版本库的演进保持简洁,主干清晰,各个分支各司其职,井井有条。
 

Git Flow工具

1. SourceTree

2. GitFlow for Visual Studio

二、Git  flow 分支管理的图解

下面是git  flow 分支管理的图解

Git flow分支管理详解_第1张图片  git flow 图解

 

三、Git flow分支功能介绍

对于主分支一般有两个,分别是masterdev

对于流程分支,一般分为三部分,分别是featurehotfixrelease

下面我以图表的形式介绍下各个分支的主要功能:

 

Git flow 分支功能表

分支名称

分支作用

master

稳定分支,用于生产环境,与线上版本同步

dev

开发分支,用于测试环境,用于构建测试版本,来源于 master

feature/xxx

功能分支,用于功能开发,来源于 dev,开发完成并自测通过后合并到 dev

 

hotfix/xxx

修复分支,线上功能修复,来源于 master,修复后双向merge dev master

 

release/xxx

发布分支,版本发布使用,来源于 dev 测试后的稳定代码,不应再发功能开发,发布后,要双向 merge dev master

 

1. 核心分支(两种)

核心分支是指 masterdev分支:

主分支(Master):

  1. 代码库应该有一个、且仅有一个主分支。
  2. 所有提供给用户使用的正式版本,都在这个主分支上发布。
  3. 这个分支只能从其它分支合并,不能在这个分支上直接修改。
  4. 需要注意的是,所有在master上的提交应该标记tag。
Git flow分支管理详解_第2张图片 git flow master分支tag 示例

 

开发主分支(Develop):

  1. dev分支是我们的主开发分支。
  2. 包含所有要发布到下一个Release的代码。
  3. dev 分支主要合并于其他分支,比如Feature分支。
  4. dev分支一般只是进行一些优化和升级,若有新的需求应该拉出一个新的feature分支。

 

2. 临时分支(三种)

临时分支是指 feature、release、hotfix分支,这三种分支都属于临时性需要,使用完以后,应该删除,使得代码库的常设分支始终只有masterdevelop

功能(feature)分支:

feature主要是用来开发一个新的功能,开发完成后,要合并到Develop分支,来源于develop

Git flow分支管理详解_第3张图片  feature 分支图解

 

预发布(release)分支

release主要是版本分部使用,当需要发布一个新版本的时候,我们要基于Develop分支创建一个Release分支(来源于Develop),创建完成后,要双向合并到MasterDevelop分支,注意此分支不再发布新功能。

Git flow分支管理详解_第4张图片 release 分支图解

 

修补bug(hotfix)分支:

hotfix主要用于线上修复,当在线上发现Bug的时候,需要从master分支创建一个Hotfix分支(来源于master), 完成bug修复之后要双向合并到MasterDevelop分支,所以Hotfix的修复会进入下一个Release

 

Git flow分支管理详解_第5张图片 hotfix 分支图解

 

四、 Git Flow流程示例代码

1. 创建develop分支

// 从master拉出develop分支
git pull origin master   //可选,获取最新版本
git checkout -b develop master

// 发布develop分支
git push -u origin develop

2. 创建feature分支

// 从develop拉出feature_v2.0功能分支
git pull origin develop   //可选,获取最新版本
git checkout -b feature_v2.0 develop

// 发布feature_v1.1分支
git push -u origin feature_v2.0

3. 完成feature,合并到develop分支

// develop分支获取最新
git pull origin develop  

// 切换到develop分支
git checkout develop 

// 从feature分支合并到develop分支
git merge --no-ff feature_v2.0 


// 删除feature分支,也可以不删除
git branch -d feature_v2.0

4. 开始release

从develop拉出一个release分支
git pull origin develop   //可选,获取最新版本
git checkout -b release_v2.0 develop

5. 完成release,合并到master分支和develop分支,在master打上tag标记

// 合并到master
git checkout master
git merge --no-ff release_v2.0

// 在master打tag标记
git tag release2.0 master
git push --tags

// 合并到develop
git checkout develop
git merge --no-ff release_v2.0

6. 开始hotfix

从主线master拉出一个hotfix分支
git pull origin master   //可选,获取最新版本
git checkout -b hotfix_v2.0.1 master

7. 完成hotfix,合并到master和develop,并在master上打tag。

// 合并hotfix_v2.0.1到master
git checkout master
git merge --no-ff hotfix_v2.0.1

// 在master打上tag
git tag hotfix2.0.1 master
git push --tags

// 合并hotfix_v2.0.1到develop
git checkout develop
git merge --no-ff hotfix_v2.0.1

五、分支命名规范

  1. 命名都统一采用小写
  2. feature分支:以"feature_"开头,如feature_v1.1
  3. release分支:以"release_"开头,如release_v1.1
  4. hotfix分支:以"hotfix_"开头,如hotfix_20160112
  5. tag标记:如果是release分支合并,则以"release_"开头。如果是hotfix分支合并,则以"hotfix_"开头。
  6. master分支每次提交都要打tag,release tag:如release_v1.1,hotfix tag:如hotfix_20160112

 

你可能感兴趣的:(技术志)