my-git

Google 主干开发与版本控制实践

原文链接:

1. Google 实践带来的关键判断

主干开发的重点是让团队围绕一条主要代码线持续集成,尽量减少长期分支。

它背后的判断是:分支存在越久,集成风险越大,反馈越晚,冲突和语义偏差越难处理。

大规模团队采用主干开发,核心原因是它把复杂度提前暴露到每天的集成、测试和评审中。

2. 主干开发需要哪些前提

前提 说明
快速 CI 变更合入前后都要尽快反馈
小变更 每个提交和 PR 都要足够小,便于 Review 和回滚
代码所有权 关键路径要有人负责审查
自动化测试 主干稳定依赖可靠测试信号
feature flag 未完成能力不能直接暴露给用户
快速回滚 主干出现问题后要能快速撤销

没有这些前提,主干开发会变成“大家直接往主分支堆代码”。

3. 分支策略

主干开发并不等于完全没有分支。

更现实的做法是:

short-lived branch -> review -> main -> CI -> release

4. 为什么它适合大规模协作

集成风险更早出现

长期分支把风险推迟到合并那一天。

主干开发把风险拆成很多小块,在每天的提交和检查中处理。

线上事实更接近主线

主线越接近线上,问题定位越简单。

当线上版本可以追溯到主线上的清晰 commit 或 tag,回滚和审计都更容易。

平台可以围绕主线优化

CI、代码搜索、依赖分析、代码所有权、发布系统,都可以围绕主线建立统一模型。

多条长期分支会让这些能力的复杂度快速上升。

5. 普通团队怎么落地

不要一上来追求“纯主干开发”。

更稳的顺序是:

  1. 缩短 feature 分支生命周期
  2. 要求 PR 足够小
  3. 建立必需 CI 检查
  4. 为核心目录配置 owner
  5. 引入 feature flag
  6. 建立 revert 优先的事故处理习惯
  7. 再逐步减少长期分支

6. 适合什么团队

适合:

不适合:

7. 对本仓库的启发

主干开发不是一种轻流程口号,它是一组工程能力的结果。

如果团队想用它,需要同时建设:

这些能力比“是否只保留一个主分支”更重要。