😀 前言:
之前自己有一套自己的基于git的工作流,参考的来源基本上是公司的手册和网上一些零碎片段,但实际我所使用的git工作流早已有前人总结,并且可以分为三类,本文就详细的介绍一些前人总结好的这三类以及它们所适用的情况
希望可以给你带来一些帮助
🧭 背景说明
我们要讨论的是三种流行的 Git 工作流:
| 工作流名称 | 常用于平台 | 特点关键词 |
|---|---|---|
| Git Flow | Git / GitLab / GitHub | 发布节奏、长周期、多分支 |
| GitHub Flow | GitHub | 短周期、持续交付、简单 |
| GitLab Flow | GitLab | 结合 Git Flow 和 CI/CD,支持多环境 |
在阅读下面的内容之前,建议先阅读一篇别人写的说明:一文弄懂 Gitflow、Github flow、Gitlab flow 的工作流(这篇文章里配了很多图,说的也比较透彻)
🔍 一、Git Flow 工作流(经典老牌)
🌱 概念
由Vincent Driessen提出,是最早系统化的 Git 分支策略。
🧱 分支结构
main:最终发布版本develop:开发主干feature/*:新功能开发release/*:发版准备hotfix/*:紧急修复
✅ 优点
- 职责分明,流程稳健
- 适合发布周期明确、多人协作的大型项目
- 支持多版本并行维护
❌ 缺点
- 分支繁多,流程复杂
- 频繁切换分支,增加合并冲突风险
- 不适合持续交付和 DevOps 场景
✅ 适用场景
传统企业项目、稳定迭代、需同时维护多个版本
🧪 二、GitHub Flow(轻量敏捷)
🌱 概念
GitHub 官方推荐的工作流,适合持续交付(Continuous Delivery)场景
🧱 分支结构
main:唯一主干,始终可部署feature-xxx:功能分支,从main拉,完成后 PR 合并
工作流程
- 从
main分支拉feature/xxx - 提交代码并 Push 到远程
- 发起 Pull Request(PR)
- 审查通过后合并(推荐 squash merge)
- CI 自动部署(可选)
✅ 优点
- 简单直接,分支少
- 快速迭代,适合持续集成 / 部署
- CI/CD 友好
❌ 缺点
- 缺少发版和长期支持的机制
- 不适合复杂产品线或版本并行发布场景
✅ 适用场景
敏捷开发、微服务项目、开源项目、小型团队
🚀 三、GitLab Flow(进阶混合)
🌱 概念
GitLab 官方提出,结合 GitHub Flow 和 Git Flow 的优点,并集成Issue、CI/CD、环境管理。
🧱 常见变种
GitLab Flow 不是固定结构,有三种主流变体:
✅ 基于环境的分支(Environment-based)
main:生产环境preprod/staging:预发布dev:开发
✅ 基于发布的分支(Release-based)
main:最新稳定版本release/2024.05:发布分支hotfix/:快速修复主干问题
✅ 基于 Issue 的工作流
- 每个功能关联一个 Issue
- 从
main或develop创建feature/issue-123-add-login - MR(Merge Request)中自动关联 Issue、Review、测试、部署
✅ 优点
- 灵活兼容 CI/CD、代码审查、Issue 跟踪
- 环境部署友好(Staging → Prod)
- 支持多版本、团队分工
❌ 缺点
- 需要一定团队协作成熟度
- 初学者理解成本较高
✅ 适用场景
使用 GitLab 全套工具链、希望集成 Issue+CI+CD 的 DevOps 团队
📊 三者对比总结
| 项目 | Git Flow | GitHub Flow | GitLab Flow |
|---|---|---|---|
| 分支复杂度 | 高(5+ 分支) | 低(2~3) | 中(按环境或发布灵活配置) |
| 学习曲线 | 高 | 低 | 中偏高 |
| 支持发版 | ✅ 强 | ❌ 弱 | ✅ 强 |
| 支持热修复 | ✅ 分支专用 | ✅ 快速合并主干 | ✅ 快速部署或合并 |
| 支持 CI/CD | 可支持 | 很友好 | 原生支持 |
| 推荐使用者 | 企业内大型项目 | 开源、小团队、快节奏 | GitLab 用户、中大型团队 |
📌 选择建议(简明版)
| 你的场景 | 建议使用的工作流 |
|---|---|
| 开源项目、个人项目、快速迭代 | ✅ GitHub Flow |
| 企业项目、有正式发布版本 | ✅ Git Flow 或 GitLab Flow |
| DevOps 团队、GitLab 全家桶 | ✅ GitLab Flow |
| 多人协作 + CI/CD | ✅ GitHub Flow + CI + Branch Protection |
🎁 Bonus:使用建议
- GitHub 上也可以使用 Git Flow,但流程略繁琐,建议结合 GitHub Actions 管理。
- GitLab Flow 更适合配合 GitLab Runner、环境部署等功能,体现其完整 DevOps 能力。
- 无论哪种工作流,都建议:
- 强制 PR 合并
- 开启 CI 检查
- 设置分支保护规则
- 明确命名规范与责任人(可用
CODEOWNERS)
Ref
💡 有关git工作流上的问题,欢迎您在底部评论区留言,一起交流~