Git 工业化协作指南
以下是针对Git 工业化协作的完整治理方案,涵盖分支策略选型、Commit 语义化规范、历史整饰(rebase)与合并(merge)的博弈以及精确提交搬运(Cherry-Pick)。
一、分支策略:Git Flow vs GitHub Flow
1.1 策略对比矩阵
| 维度 | Git Flow(经典) | GitHub Flow(现代) | GitLab Flow(混合) |
|---|---|---|---|
| 适用场景 | 版本化软件(桌面端/移动端) | SaaS/持续部署(Web 应用) | 多环境部署(预发/生产) |
| 分支复杂度 | 高(5 类分支) | 低(仅 main+feature) | 中(main+pre+feature) |
| 发布节奏 | 周期性(周/月) | 按需(日/小时) | 按环境阶段推进 |
| 回滚复杂度 | 低(tag 固定) | 中(依赖 CD 流水线) | 低(分支对应环境) |
1.2 Git Flow 工业化实践
分支模型:
main (生产) │ ├─ develop (集成) │ │ │ ├─ feature/payment-v2 (功能开发) │ ├─ feature/user-auth (功能开发) │ └─ hotfix/fix-sql-inject (热修复 ← 从 main 拉出) │ └─ release/v2.1.0 (预发布 ← 从 develop 拉出,测试通过后合并到 main+develop)
命名规范与生命周期:
# 功能分支(基于 develop,生命周期:开发→PR→删除)
git checkout -b feature/JIRA-123-refactor-order-service develop
# 发布分支(基于 develop,版本号命名)
git checkout -b release/v2024.02.15 develop
git tag -a v2.1.0 -m "Release version 2.1.0"
git push origin v2.1.0
# 热修复(基于 main,紧急上线)
git checkout -b hotfix/fix-db-connection-leak main
# 修复后同时合并到 main 和 develop,防止回归
防护机制:
- 分支保护:
main/develop禁止 Force Push,需 Code Review(至少 2 人 Approve) - Hook 限制:禁止直接
git push origin develop,必须通过 PR/Merge Request

