主干开发是什么
主干开发(Trunk-Based Development)指开发者以小批量、高频次把改动合入主干:分支寿命极短(小时到天),或者直接向主干提交。它成立的前提是自动化测试、特性开关与快速回滚这些配套能力,而不是单纯要求「少开分支」。
基本信息
| 核心做法 | 小批量、高频次合并到主干 |
|---|---|
| 分支策略 | 极短生命周期分支,或直接提交主干 |
| 配套能力 | 自动化测试、特性开关、快速回滚、主干随时可发布 |
| 反向信号 | 功能分支存在数周、合入前反复合并主干 |
典型使用场景
- 团队要从 Git Flow 简化流程、缩短交付周期
- 希望减少长期分支带来的合并冲突与集成风险
- 发布节奏快,需要按功能开关灰度上线
- 已有稳定的 CI 与自动化测试作为质量网
- 需要主干任何时刻都能构建出可发布版本
日常节奏示意
日常节奏示意
git switch main && git pull --ff-only # 每次动手前先同步主干
git switch -c feat/small-step # 分支只活几小时到一天
git commit -m 'feat: 小步提交,保持可回滚'
git fetch origin && git rebase origin/main # 合入前对齐主干,冲突就地解决
git push -u origin feat/small-step # 尽快提 PR 触发评审与流水线
git switch main && git pull --ff-only # 合入后回到主干继续下一步与其他模型对照
| 模型 | 分支寿命 | 主要风险 |
|---|---|---|
| 主干开发 | 小时到天 | 依赖自动化与开关,纪律要求高 |
| Git Flow | 数天到数周 | 冲突累积、集成被推迟 |
| GitHub Flow | 数天 | 分支偏长时集成仍会拖延 |
trunkbaseddevelopment.com 明确强调:短生命周期分支加频繁集成是主干开发的必要条件,这两点做不到就不算主干开发。
未完成的功能用特性开关控制曝光,让代码可以先进主干、暂不对用户可见;开关本身要排期清理,否则会退化成隐形分支。
依赖升级同样要小步走:一次性升级大量依赖会让主干长时间处于不可用状态,分段升级、每段跑完整回归更稳妥。