Git 分支策略与 Code Review 工程化:Trunk-Based 团队实践手册
2026-06-12 14:22:53
Git 分支策略与 Code Review 工程化
适用团队:10–50 人研发,双周迭代,GitHub / GitLab / Gitee
一、分支策略选型
| 策略 | 分支数 | 合并频率 | 适合 |
|---|---|---|---|
| Git Flow | 多(develop/release/hotfix) | 低 | 版本化客户端 |
| GitHub Flow | 少(main + feature) | 中 | Web 小团队 |
| Trunk-Based | 极少(main + 短命 branch) | 高 | 持续交付 SaaS |
2026 国内互联网后端主流:Trunk-Based + Feature Flag,main 永远可发布。
二、Trunk-Based 规则
2.1 分支命名
feature/JIRA-1234-order-export
fix/JIRA-5678-null-pointer
chore/upgrade-spring-3.4
2.2 生命周期
- Feature 分支 ≤ 2 天,超过则拆分
- 每日 rebase main,禁止 long-lived develop
- 合并方式:Squash Merge(保持 main 线性历史)
2.3 保护规则(GitLab 示例)
protected_branches:
- name: main
push_access_level: no one
merge_access_level: developer
required_approvals: 2
code_owner_approval_required: true
三、Code Review 流程
开发者提 MR → CI 门禁 → Reviewer 审查 → 2 Approve → Merge Queue → 自动部署 Staging
3.1 PR 模板
## 变更说明
<!-- 做了什么、为什么 -->
## 测试
- [ ] 单元测试通过
- [ ] 本地 / Staging 验证截图
## 风险
<!-- 数据库变更?配置变更?回滚方案? -->
## Checklist
- [ ] 无硬编码密钥
- [ ] 日志无 PII 明文
3.2 Reviewer 检查清单
正确性:边界条件、并发、空指针
设计:是否重复造轮子、是否符合分层
安全:SQL 注入、越权、敏感数据
可观测:关键路径是否有日志/指标
测试:核心逻辑是否有单测
Review 时效 SLA:工作时间内 4 小时首次响应。
四、自动化门禁
| 检查项 | 工具 | 阻断 |
|---|---|---|
| 编译 + 单测 | GitHub Actions | ✓ |
| 覆盖率降幅 | JaCoCo | > 2% 降阻断 |
| Sonar Critical | SonarQube | ✓ |
| 依赖漏洞 | Trivy / OWASP | Critical 阻断 |
| Lint | Checkstyle / ESLint | ✓ |
# .github/workflows/ci.yml 片段
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: mvn -B verify
- uses: codecov/codecov-action@v4
五、CODEOWNERS
# CODEOWNERS
/order-service/ @team-order
/gateway/ @team-platform @arch-lead
*.sql @dba-team
架构变更、DB 迁移必须 Code Owner Approve。
六、Merge Queue
高并发团队启用 Merge Queue,避免「两个 PR 各自 CI 绿但合并后冲突/失败」:
- PR Approve 后进入队列
- 临时分支 = main + PR1 + PR2
- CI 通过后才真正 merge
GitHub Merge Queue / GitLab Merge Trains 均可。
七、Hotfix 流程
main 发现 P0 → hotfix/JIRA-xxx 从 main 拉出
→ 最小修复 + 测试 → 2 人 Approve → merge main
→ 自动打 tag v1.2.1 → 生产发布 → cherry-pick 如有 release 分支
禁止直接在 main push。
八、度量指标
| 指标 | 目标 |
|---|---|
| PR 平均 Review 时长 | < 8h |
| main 部署频率 | ≥ 每日 1 次 |
| Change Failure Rate | < 15% |
| Revert 率 | < 5% |
小结
分支策略的本质是 降低集成风险;Code Review 的本质是 知识共享 + 缺陷左移。Trunk-Based 配合严格 CI 与 Review SLA,是国内高效 SaaS 团队验证过的组合。