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.
引用与延伸阅读
- Git Branching Branching Workflows [书籍]
- Git rebase [官方]
- Git merge [官方]
- Git worktree [官方]
学完这篇你会掌握什么
- 理解 TBD 的核心纪律:压缩分支寿命、高频小批次合并,让主线始终可发布
- 掌握从主线切短分支、小批次提交、
rebase/merge main再快速合并的操作节奏 - 知道 TBD 与 GitFlow 的取舍,以及哪些“短分支误区”会让你以为用上了 TBD 其实没有
Trunk-based development(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 不是取消边界,而是压缩边界周期。你仍然需要代码审查、CI 和发布门禁,只是把每次改动变小、变快、变清晰。
团队落地时最容易忽略的 3 件事
- 没有把需求切小,导致“短分支”只是口号
- CI 太慢,合并反馈滞后,分支仍会堆积
- 回滚策略不清晰,主线变更虽快但不可控
常见误区
误区 1:分支短就等于质量高
分支短只是降低集成摩擦,质量仍取决于测试与审查门禁。
误区 2:所有改动都要一天内合并
复杂改动可以分阶段合并,通过 feature flag 或逐步启用控制风险。
误区 3:TBD 不需要 release 策略
恰恰相反。越高频合并,越需要清晰的版本、回滚和观察指标。
- 列出一个你们最近做过的大需求。
- 把它拆成 3 到 6 个可独立合并的小批次。
- 为每个批次写出“最小可回滚单元”。
- 检查是否每个批次都能在主线独立通过 CI。
接下来建议继续看什么
给你的练习
- 找你们最近做过的一个大特性,按本文方法拆成 3–6 个可独立合并的小批次,并给每批写出“最小可回滚单元”。
- 在测试仓库里模拟 TBD 节奏:从 main 切短分支、用
git add -p做小提交、合并前git rebase origin/main,体验“分叉时间越短冲突越少”。 - 挑一个你们团队当前禁止 rebase 的场景,设计“在 PR 中由平台做 update branch”的等价流程,并写出对应的 CI 门禁清单。
延伸阅读
沿着同一主题继续深入: