← 返回资讯
苏晴
资深编辑
已审核

Git 工作流选型:Trunk-Based 还是 GitFlow?

选错 Git 工作流,轻则合并冲突不断,重则发布流程卡死。我在两家公司经历过两种工作流的切换,说说真实的感受。

Git 工作流选型:Trunk-Based 还是 GitFlow?

Git 工作流选型:Trunk-Based 还是 GitFlow?

选错 Git 工作流,轻则合并冲突不断,重则发布流程卡死。我在两家公司经历过两种工作流的切换,说说真实的感受。

GitFlow

BASH
main          ●───────●──────────●── (生产)
              │       │          │
develop       ●──●──●─●──●──●──●── (开发)
              │  │      │  │
feature/*     ●──●      ●──● (功能分支)
                  │
release/*         ●──● (发布分支)
                      │
hotfix/*               ●──● (热修复)

优点

缺点

适合场景:传统软件、App 发版、有 QA 团队

Trunk-Based Development

BASH
main    ●──●──●──●──●──●──●── (主干)
        │  │  │  │
分支     ●  ●  ●  ● (短生命期分支,<2天)

优点

缺点

适合场景:SaaS、持续部署、小团队

我们踩过的坑

GitFlow 的坑

BASH
# 经典灾难场景:hotfix 合并顺序搞错
git checkout main
git merge hotfix/urgent-fix
git checkout develop
git merge hotfix/urgent-fix  # 忘记这步,develop 和 main 分叉了

Trunk-Based 的坑

BASH
# 大功能直接提交到 main,破坏性变更
git checkout -b huge-feature
# ... 两周后 ...
git checkout main
git merge huge-feature  # 300 个冲突

正确做法

BASH
# 大功能用 feature flag + 小步提交
# 1. 先提交接口定义
# 2. 再提交实现(feature flag 关闭)
# 3. 逐步开启
const useNewFeature = featureFlag('new-checkout')
if (useNewFeature) {
  return <NewCheckout />
}
return <OldCheckout />

我的选择建议

| 团队规模 | 发布频率 | 推荐工作流 |

|---------|---------|-----------|

| 1-3人 | 每天 | Trunk-Based |

| 4-10人 | 每周 | Trunk-Based + 短分支 |

| 10+人 | 每两周 | GitFlow |

| 任何规模 | 持续部署 | Trunk-Based |

总结:小团队用 Trunk-Based,大团队有固定发版周期用 GitFlow。关键是选一个,然后全团队严格执行。

737
12298 阅读
4 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年07月12日 11:21

苏晴

资深编辑

科技媒体从业 8 年,曾就职于多家科技媒体。关注 AI 创业和投资赛道,采访过 50+ 位行业从业者。

读者评论 4

A
AI研究员 3天前
观点有道理,不过我觉得还需要考虑算力成本的问题。
回复 点赞 (11)
M
创业者Mark 6天前
正在做相关方向,这篇文章给了我不少启发。
回复 点赞 (7)
老李 1周前
有个小问题想请教,文中提到的那个方案在大规模场景下性能怎么样?
回复 点赞 (5)
运营小陈 1周前
转发到团队群了,大家都觉得有参考价值。
回复 点赞 (4)