相信任何一个开发人员在看到冲突消息时都会沮丧地撕扯头发。试图解决合并冲突是每个开发人员都讨厌的事情,特别是当准备进行生产部署时。而这就是正确的git workflow可以解决的问题。当然,正确的git workflow不能解决所有问题。但这是朝着正确方向迈出的一步。

如何设置git workflow取决于项目、团队的发布时间表、以及团队的规模等, 本文将带你了解5种不同的git workflow、它们的优缺点以及应该在什么时候使用它们。

1. 基本的Git Workflow

gitlab中流水线失败_新特性


最基本的git workflow只有一个分支——master分支。在这个workflow中,所有提交都被直接添加到mastser分支,并部署到staging环境和生产环境中。

除非这是一个小项目,并且你想快速上手, 否则不推荐使用这种workflow:

  • 团队协作时会有很多冲突
  • 将Bug提交到master的的几率变高
  • 很难维护一套干净的代码
2. Git 特性分支 Workflow

gitlab中流水线失败_gitlab中流水线失败_02

Git 特性分支 Workflow适用于多个开发人员协作的情况。假设有一个开发人员正在开发一个新特性,另一个开发人员正在开发第二个特性。如果两个开发人员都在同一个分支工作,并向他们添加提交,这将使代码库变得非常混乱,并产生大量冲突。

为了避免这种情况,这两个开发人员可以从master分支中创建两个独立的分支,完成了自己开发的特性后,就可以将各自的分支合并到master分支,并且无需等待其他特性完成就可以进行部署。

3. Git dev+特性分支 Workflow

这种workflow是开发团队中比较流行的workflow之一。它类似于Git特性分支workflow,但多一个dev分支,该分支是并行添加到master分支的。

在这个workflow中,master分支的代码总是用于部署生产环境。dev分支反映了下一个版本最新交付的开发变更的状态。开发人员从dev分支创建分支,并开发新特性。一旦特性的开发完成,就对它进行测试,然后与dev分支合并,同dev分支的合并的代码一起进行测试,以防重复合并。

gitlab中流水线失败_git_03

4. Gitflow Workflow

Gitflow Workflow 与我们之前介绍的其他workflow也非常相似, 它分为

热修复(hot-fix)分支
热修复分支是唯一从master分支创建并直接合并到master分支而不是dev分支的分支。它仅在必须快速修复生产问题时使用。这个分支的优点是,它允许快速修复生产环境的问题,而不需要等待下一个发布周期。
一旦热修复合并到master分支并部署,它也应该被合并到dev分支和当前的release分支。这样做是为了确保那些fork分支的开发者也可以更新最新的代码。

版本(release)分支

版本分支是在dev分支将所有为发布而开发的特性成功地合并到其中之后从dev分支派生出来的。

只有与此版本相关的代码才会添加到发布分支中,与新特性相关的其他代码则不会添加到版本分支中。

一旦这个分支与master分支合并并部署到生产环境中,也要将它合并到dev分支中,这样当一个新特性从dev分支中派生出来时,它就会使用最新的代码。

gitlab中流水线失败_git_04

在Windows上安装使用这个workflow, 只需要在项目中运行git flow init。

5. Git 分叉(fork)Workflow

分叉workflow在开源软件的团队中非常流行。
流程如下:

  1. 首先 fork 官方库, 创建一个官方仓库的副本
  2. 然后开发人员将库clone到本地环境
  3. 官方库的远程路径添加到本地repo中
  4. 开发人员在本地创建新特性分支,进行更改并提交。
  5. 这些更改连同分支一起推送到官方库的副本中
  6. 请求push到官方库
  7. 官方库的管理员检查更改, 同意将更改合并到官方库。