🌿 Git分支策略
Git分支策略对比与选择指南,帮助你选择适合团队的分支模型
简单GitHub Flow
最简单的分支策略,适合持续部署的Web应用。只有一个长期分支 main,所有开发在 feature 分支进行,通过 Pull Request 合并。
main← 随时可部署的生产分支
├──
feature/*← 功能分支,完成后PR合并到main├──
hotfix/*← 紧急修复,直接合并到main✅ 优点
- 简单易懂,学习成本低
- 适合持续部署
- PR审查保证质量
❌ 缺点
- 不适合需要多版本维护的项目
- 缺乏发布管理
🎯 适用场景
- SaaS产品
- 持续部署的Web应用
- 小团队快速迭代
复杂Git Flow
经典的分支模型,适合有明确发布周期的项目。包含5种长期/短期分支,流程严格但完善。
main← 生产分支,只合并release和hotfix
├──
develop← 开发主分支,集成所有功能│ ├──
feature/*← 功能分支,从develop创建│ ├──
release/*← 发布分支,从develop创建,合并到main和develop└──
hotfix/*← 紧急修复,从main创建,合并到main和develop✅ 优点
- 清晰的发布流程
- 支持多版本并行
- 紧急修复不影响开发
❌ 缺点
- 分支复杂,学习成本高
- 合并冲突频繁
- 不适合持续部署
🎯 适用场景
- 有版本号的产品
- 需要维护多个版本
- 中大型团队
推荐GitLab Flow
介于GitHub Flow和Git Flow之间的折中方案,引入环境分支概念,兼顾简洁和规范。
main← 代码主分支
├──
staging← 预发布环境├──
production← 生产环境├──
feature/*← 功能分支✅ 优点
- 环境分支对应部署环境
- 比Git Flow简单
- 支持多环境部署
❌ 缺点
- 需要维护环境分支
- 上游合并可能延迟
🎯 适用场景
- 多环境部署项目
- 需要预发布验证
- 中型团队
简单Trunk-Based Development
所有开发者都在主干(main/trunk)上提交,使用Feature Flag控制未完成功能。适合CI/CD成熟度高的团队。
main (trunk)← 所有开发在此进行
├──
short-lived/*← 短命分支(1-2天),快速合并回main✅ 优点
- 无合并地狱
- 持续集成
- 快速反馈
❌ 缺点
- 需要Feature Flag
- 需要完善的CI/CD
- 不适合新手团队
🎯 适用场景
- Google/Facebook级工程
- 高成熟度CI/CD
- 经验丰富的团队