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 绿但合并后冲突/失败」:

  1. PR Approve 后进入队列
  2. 临时分支 = main + PR1 + PR2
  3. 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 团队验证过的组合。