理解 Git 分支管理最佳实践

栏目: 编程工具 · 发布时间: 5年前

内容简介:在进行分支管理讲解之前,我们先来对分支进行一个简单的分类,并明确每一类分支的用途。从上图我们可以看出,我们同时开始了两个功能的开发/研究任务,下面我将以此为基础来讲解分支管理的流程。

原文

理解 Git 分支管理最佳实践

Git 分支有哪些

在进行分支管理讲解之前,我们先来对分支进行一个简单的分类,并明确每一类分支的用途。

分支分类

根据生命周期区分

  • 主分支:master,develop;
  • 临时分支:feature/*,release/*,hotfix/*;

根据用途区分

  • 发布/预发布分支:master,release/*;
  • 开发分支:develop;
  • 功能分支:feature/*;
  • 热修复分支:hotfix/*;

分支的用途

feature/功能名称
release/v+发布的版本号
hotfix/v+bug修复的版本号

Git 分支管理流程

在上一部分,我们已经明确了每个主分支及辅助分支的用途与来源了,下面我们就来详细了解一下 Git 分支管理的整个流程。

先来看一下分支在完整的功能开发中是如何演变的:

理解 Git 分支管理最佳实践

从上图我们可以看出,我们同时开始了两个功能的开发/研究任务,下面我将以此为基础来讲解分支管理的流程。

  1. 先拉取最新的 develop 分支,然后以最新的 develop 为基准创建两个新的功能分支 feature/f1 和 feature/f2;

    git pull origin develop
    git checkout -b feature/f1 develop
    
  2. 开发人员在各自的功能分支上进行开发工作,等当前功能分支开发完之后,将当前分支交由测试人员进行测试,测试过程中的问题修复及功能修改均在当前功能分支上进行;

  3. 当 feature/f1 上的开发及测试任务均完成之后,将 feature/f1 合并回 develop ,并删除 feature/f1 ;

    git checkout develop
    git merge --no-ff feature/f1
    git branch -d feature/f1
    
  4. 从 develop 分支创建新的预发布分支 release/0.2,并部署到预发布环境上测试。在预发布过程中发现问题则直接在 release/0.2 上进行修复;

    git checkout -b release/0.2 develop
    
  5. 在生产环境中发现一个 bug,从 master 上分离出一个热修复分支 hotfix/bug1,并在上面进行修复、测试并在预发布环境中验证,当都验证通过之后将分支重新合并回 develop 及 master,并在 master 上打一个热修复 tag v0.1.1,最后删除 hotfix/bug1;

    git checkout -b hotfix/bug1 master
    ....................
    ....修复bug..ing....
    ....................
    git checkout develop
    git merge --no-ff hotfix/bug1
    git checkout master
    git merge --no-ff hotfix/bug1
    git tag v0.1.1
    git branch -d hotfix/bug1
    
  6. 在 feature/f2 分支上的功能 f2 已经开发并测试完成,然后将 feature/f2 合并回 develop,并删除 feature/f2,此时已经存在新功能 f1 的预发布分支 release/0.2,所以需要等待其发布完成之后才能创建预发布分支 release/0.3;

    git checkout develop
    git merge --no-ff feature/f2
    git branch -d feature/f2
    
  7. 预发布分支 release/0.2 在预发布环境中完全测试通过,随时可以部署到生产环境。但在部署到生产环境之前,需要将分支合并回 develop 及 master,并在 release/0.2 上打一个正式发布版本的 tag v0.2,最后删除 release/0.2;

    git checkout develop
    git merge --no-ff release/0.2
    git checkout master
    git merge --no-ff release/0.2
    git tag v0.2
    git branch -d release/0.2
    
  8. 当前已经不存在 release/* 预发布分支,所以可以开始功能 f2 的预发布上线。创建预发布分支 release/0.3,并部署预发布环境测试;

    git checkout -b release/0.3 develop
    
  9. 分支 release/0.3 测试通过,将 release/0.3 合并回 develop 及 master,然后在 master 上打一个正式发布版本的 tag v0.3,最后删除 release/0.3;

Git Flow

上述过程中未使用到 git flow,均是以约定的规范流程进行,大家可以尝试使用 git flow 来管理分支。

#初始化 git flow
# 设置 feature、release、hotfix、tag 的前缀名
git flow init
 
#开始一个新功能 f1 的开发,以 develop 为基准创建 feature/f1
git flow feature start f1
 
#....................
#....f1 功能开发中....
#....................
 
#新功能 f1 开发完成
# 合并回 develop
# 删除 feature/f1 分支
git flow feature finish f1
 
#开始新功能 f1 的预发布验证,版本定为 0.2
git flow release start 0.2
 
#新功能 f1 预发布验证通过
# 合并到 master 分支
# 在 release 上打 tag v0.2
# 将 tag v0.2 合并到 develop 分支
# 删除 release/0.2 分支
git flow release finish 0.2
 
#开始 bug1 的修复,以 master 为基准创建 hotfix/bug1
git flow hotfix start 0.2.1
 
# bug1 修复完成
# 合并到 master 分支
# 在 hotfix 上打 tag v0.2.1
# 将 tag v0.2.1 合并到 develop 分支
# 删除 hotfix/0.2.1 分支
git flow hotfix finish 0.2.1

至此,Git 分支管理的整个流程已经讲解完,有兴趣的可以看一下具体的 分支管理演示 https://github.com/alienwow/gitbranchmanage 。 

如果有上述讲解中任何不正确的地方,欢迎大家批评指正,如有疑问欢迎一起讨论。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

创新者的解答

创新者的解答

【美】克莱顿•克里斯坦森、【加】迈克尔·雷纳 / 中信出版社 / 2013-10-10 / 49.00

《创新者的解答》讲述为了追求创新成长机会,美国电信巨子AT&T在短短10年间,总共耗费了500亿美元。企业为了保持成功记录,会面对成长的压力以达成持续获利的目标。但是如果追求成长的方向出现偏误,后果往往比没有成长更糟。因此,如何创新,并选对正确方向,是每个企业最大的难题。 因此,如何创新,并导向何种方向,便在于创新结果的可预测性─而此可预测性则来自于正确的理论依据。在《创新者的解答》中,两位......一起来看看 《创新者的解答》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码