PostsMapsLinks
Version Control

GitLab Flow

GitLab Flow 是介于 GitHub Flow 和 Gitflow 之间的折中方案,以环境分支和 upstream-first 策略为特色。

Quick Questions

GitLab Flow 是什么?

GitLab Flow 是 GitLab 于 2014 年提出的一种 Git 工作流,定位为 GitHub Flow 与 Gitflow 之间的折中方案。它在 GitHub Flow 的简洁性基础上增加了可选的环境分支和发布分支, 同时大幅减少了 Gitflow 的分支复杂度。核心原则:提交只能向下游流动(commits only flow downstream)。

GitLab Flow 怎么运作?

  1. main 创建功能分支,每个分支对应一个 Issue
  2. 完成开发后,通过 Merge Request (MR) 合并回 main
  3. 合并采用 --no-ff(非快进),保留合并提交
  4. main 逐级合并到下游环境分支(如 stagingproduction
  5. Hotfix 先合并入 main,再 cherry-pick 到下游(upstream-first)

GitLab Flow 的三种子模式?

  • 生产分支模式:维护独立的 production 分支,适用于无法每次合并即部署的场景(如 iOS App 需通过审核)
  • 环境分支模式mainstagingpre-productionproduction,逐级部署测试
  • 发布分支模式:维护 2-3-stable2-4-stable 等长期分支,适用于需要支持多版本的对外发布场景

三种子模式可按需选用,不需要全部采用。

GitLab Flow 和 GitHub Flow、Gitflow 有什么区别?

维度GitflowGitHub FlowGitLab Flow
复杂度
核心分支master + develop + 辅助分支main + 功能分支main + 功能分支 + 可选环境 / 发布分支
发布策略通过 release 分支发布合并即部署通过环境分支或发布分支部署
Hotfix专门的 hotfix 分支与普通功能相同流程先入 main,再 cherry-pick 下游
Issue 集成MR 自动关联并关闭 Issue

GitLab Flow 有什么局限性?

  • 环境分支可能拖慢发布:多级逐级合并可能降低发布频率
  • 不如主干开发极致:很多团队已转向更激进的 Trunk-Based Development + Feature Flag
  • cherry-pick 带来维护负担:upstream-first 要求将修复合并到多个下游分支

相关资源

Copyright © 2024 Lionad - CC-BY-NC-CD-4.0