Workflows

Trunk-Based Development 工作流

用短生命周期分支和高频小批次合并,把主线始终保持在可发布状态,降低长期分叉与集成冲突成本。

适合谁看
  • 要把命令组合成稳定流程的团队成员
  • 需要处理协作顺序和分支边界的人
前置知识
  • 知道 fetch / pull / push / branch 的基本作用
  • 能理解一条分支为什么会分叉
常见风险
  • 照抄流程却没确认当前分支关系
  • 在共享分支上用错整合方式

数据 / 性能事实

  • ≤ 1 daybranches live less than a day in pure trunk-based development, minimizing merge conflict surface出处: trunkbaseddevelopment.com

关键引语

Trunk-based development is a source-control branching model where developers integrate their work to a single shared branch (the trunk) at least once a day, keeping branches short-lived.

引用与延伸阅读

  1. Git Branching Branching Workflows [书籍]
  2. Git rebase [官方]
  3. Git merge [官方]
  4. Git worktree [官方]

学完这篇你会掌握什么

  • 理解 TBD 的核心纪律:压缩分支寿命、高频小批次合并,让主线始终可发布
  • 掌握从主线切短分支、小批次提交、rebase/merge main 再快速合并的操作节奏
  • 知道 TBD 与 GitFlow 的取舍,以及哪些“短分支误区”会让你以为用上了 TBD 其实没有

Trunk-based development(TBD)的核心,不是“禁止分支”,而是把分支寿命压到足够短,让主线始终可集成、可回滚、可发布。

TBD 的最小闭环从主线切短分支,快速完成小批次改动,尽快回到主线并验证。重点是缩短分叉时间,而不是追求单次改动很大。
起点
main 保持绿色小范围任务明确回滚方案
结果
主线持续可发布冲突窗口变小回归定位更快
TBD 的价值来自节奏管理:短分支、高频同步、小批次合并。

先想一个问题

你刚把一个拖了两周的特性分支合并进 main,冲突解决花了一整天,CI 还因为别人的改动红了。回想一下:这两周里 main 一直在变,可你的分支像个孤岛。如果当时把改动切小、每天回主线几次,今天的“合并噩梦”本可以拆成十几次几乎无冲突的小同步。

这个工作流解决什么问题

当团队长期使用大分支时,常见问题是:

  • 分支在外漂移太久,回归主线时冲突爆炸
  • CI 通过只是“分支内通过”,不代表主线仍稳定
  • 一次合并包含太多语义变化,回滚和定位都困难

TBD 的目标是把这些风险前置并分散。

什么时候适合用 TBD

  • 团队每天都有多人并发改动同一代码库
  • 希望主线随时可以发布,而不是到发布周才集成
  • 愿意把大需求拆成可独立合并的小步

如果团队仍依赖“长时间封闭开发后统一大合并”,TBD 的收益会打折扣。

推荐操作节奏

1. 从最新主线切短分支

git fetch origin
git switch main
git pull --ff-only origin main
git switch -c feature/login-copy-tuning

2. 以小批次提交推进

git add -p
git commit -m "tune login copy tone"

每个提交尽量保持“可解释、可回滚、可审查”。

3. 合并前先同步主线

git fetch origin
git rebase origin/main

如果团队禁止 rebase 个人分支,也可以在 PR 中由平台执行更新基底。

4. 快速审查并合并

关键是减少“等待合并窗口”的时间,而不是让分支挂几天后再一次性进主线。

与 GitFlow 的关键区别

  • GitFlow 强调多条长期分支(develop/release/hotfix)
  • TBD 强调主线唯一、分支短命、快速回主线

两者不是谁绝对更好,而是适配不同组织节奏。TBD 更适合高频集成场景。

不要把 TBD 理解成“直接在 main 上裸改”

TBD 不是取消边界,而是压缩边界周期。你仍然需要代码审查、CI 和发布门禁,只是把每次改动变小、变快、变清晰。

团队落地时最容易忽略的 3 件事

  1. 没有把需求切小,导致“短分支”只是口号
  2. CI 太慢,合并反馈滞后,分支仍会堆积
  3. 回滚策略不清晰,主线变更虽快但不可控

常见误区

误区 1:分支短就等于质量高

分支短只是降低集成摩擦,质量仍取决于测试与审查门禁。

误区 2:所有改动都要一天内合并

复杂改动可以分阶段合并,通过 feature flag 或逐步启用控制风险。

误区 3:TBD 不需要 release 策略

恰恰相反。越高频合并,越需要清晰的版本、回滚和观察指标。

把一个大需求改写成 TBD 形态
  1. 列出一个你们最近做过的大需求。
  2. 把它拆成 3 到 6 个可独立合并的小批次。
  3. 为每个批次写出“最小可回滚单元”。
  4. 检查是否每个批次都能在主线独立通过 CI。

接下来建议继续看什么

  1. Feature branch collaboration
  2. Sync before review
  3. Merge queue workflow

给你的练习

  1. 找你们最近做过的一个大特性,按本文方法拆成 3–6 个可独立合并的小批次,并给每批写出“最小可回滚单元”。
  2. 在测试仓库里模拟 TBD 节奏:从 main 切短分支、用 git add -p 做小提交、合并前 git rebase origin/main,体验“分叉时间越短冲突越少”。
  3. 挑一个你们团队当前禁止 rebase 的场景,设计“在 PR 中由平台做 update branch”的等价流程,并写出对应的 CI 门禁清单。

延伸阅读

沿着同一主题继续深入: