全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-11 7 分钟 ✍️ juanwangdev

Trunk-Based Development

Trunk-Based Development(主干开发)是最简洁的工作流,开发者直接在主干上开发或使用短生命周期分支。

什么是 Trunk-Based Development

开发者主要在 trunk(主干)上工作:

  • 直接提交到主干
  • 或使用极短的生命周期分支
  • 频繁集成,避免长期分支

分支策略

Bash
方式1:直接在主干开发
trunk ──●──●──●──●──●──●──→
       开发者A、B、C都在 trunk 上提交

方式2:短生命周期分支
trunk ───●────●────●────●──→
        │     │     │
短分支   ●────┘     ●────┘
        <1天       <1天

核心原则

原则说明
单一主干只有一个 trunk 分支
频繁集成每天至少集成一次
短生命周期分支分支存在不超过 1-2 天
小步提交每次提交变更小
快速回滚有问题立即回滚

工作流程

直接提交到主干

Bash
# 更新主干
git checkout trunk
git pull origin trunk

# 开发并提交
git add .
git commit -m "feat: 小功能"

# 推送(CI 自动验证)
git push origin trunk

# 如有问题立即回滚
git revert HEAD
git push origin trunk

短生命周期分支

YAML
# 创建短分支(预期 < 1天)
git checkout trunk
git checkout -b short-task

# 快速完成
git add .
git commit -m "feat: 快速任务"

# 合入主干
git checkout trunk
git merge short-task

# 立即删除
git branch -d short-task

与其他工作流对比

特性Trunk-BasedGitHub FlowGit Flow
分支数量极少较少较多
分支生命周期数小时数天数周
PR 审核可选必须必须
复杂度最低中等最高
集成频率每天多次每功能每发布

适用场景

适用不适用
高成熟度团队初学者团队
强自动化测试测试覆盖不足
快速迭代项目需要严格审核
持续部署环境传统发布流程

成功要素

强大的自动化测试

Bash
# CI 必须快速可靠
tests:
  - unit tests(必须)
  - integration tests(推荐)
  - smoke tests(推荐)

# 测试覆盖率要求
coverage: > 80%

快速回滚能力

Go
# 有问题立即回滚
# 回滚时间 < 5 分钟

git revert HEAD
git push origin trunk

# 或自动回滚
# CI 失败自动回滚

特性开关

Bash
// 使用特性开关隐藏未完成功能
if config.IsEnabled("new-feature") {
    return newFeature()
}
return oldFeature()

特性开关(Feature Flags)

优点说明
未完成功能可部署通过开关控制
灰度发布逐步开放功能
快速回滚关闭开关即可
text
# 未完成功能提交到 trunk
# 通过开关隐藏,不影响生产

# 开发完成后打开开关
# 逐步开放给用户

代码审查

text
Trunk-Based 审核方式:

方式1:提交后审核(Post-commit review)
提交 → Push → 自动审核 → 回滚(如有问题)

方式2:提交前审核(Pre-commit review)
提交 → 自动检查 → 同步审核 → Push

Trunk-Based 需要高成熟度团队和强大自动化,不适合初学者。

要点总结

  1. 开发者主要在主干上工作
  2. 分支生命周期极短(< 1-2 天)
  3. 需要强大的自动化测试
  4. 使用特性开关隐藏未完成功能
  5. 有问题立即回滚,不阻塞主干

📝 发现内容有误?点击此处直接编辑

← 上一篇 Release 分支管理
下一篇 → Code Review 最佳实践
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库