Git 最佳实践:分支管理

1.引言

git 和 svn 的一个显著区别就是提供更丰富的分支特性,我们今天就要说一下如何管理这些分支。关于 git 的分支管理,Vincent Driessen 有一篇文章说的非常好,地址在参考[1]。我这里主要就是参考他的文章。

2. 总览

git 的分支整体预览图如下。

从上图可以看到主要包含下面几个分支:

  • master: 主分支,主要用来版本发布。
  • develop:日常开发分支,该分支正常保存了开发的最新代码。
  • feature:具体的功能开发分支,只与 develop 分支交互。
  • release:release 分支可以认为是 master 分支的未测试版。比如说某一期的功能全部开发完成,那么就将 develop 分支合并到 release 分支,测试没有问题并且到了发布日期就合并到 master 分支,进行发布。
  • hotfix:线上 bug 修复分支。

除此之后还可以有 fast-track 等分支。

3. 主分支

主分支包括 master 分支和 develop 分支。master 分支用来发布,HEAD 就是当前线上的运行代码。develop 分支就是我们的日常开发。使用这两个分支就具有了最简单的开发模式:develop 分支用来开发功能,开发完成并且测试没有问题则将 develop 分支的代码合并到 master 分支并发布。

这引入了几个问题:

  1. develop 分支只有发布完了才能进行下一个版本开发,开发会比较缓慢。
  2. 线上代码出现 bug 如何进行 bug 修复。

带着这两个问题往下看。

4. 辅助分支

主要介绍的辅助分支如下:

  • feature 分支
  • release 分支
  • hotfix 分支

通过这些分支,我们可以做到:团队成员之间并行开发,feature track 更加容易,开发和发布并行以及线上问题修复。

4.1 Feature 分支

feature 分支用来开发具体的功能,一般 fork 自 develop 分支,最终可能会合并到 develop 分支。比如我们要在下一个版本增加功能1、功能2、功能3。那么我们就可以起三个feature 分支:feature1,feature2,feature3。(feature 分支命名最好能够自解释,这并不是一种好的命名。)随着我们开发,功能1和功能2都被完成了,而功能3因为某些原因完成不了,那么最终 feature1 和 feature2 分支将被合并到 develop 分支,而 feature3 分支将被干掉。

我们来看几个相关的命令。

从 develop 分支建一个 feature 分支,并切换到 feature 分支

You may also like...