一、大公司的分支管理实践
1. Git Flow(经典模型)
master
:主分支,仅用于发布正式版本featureelop
:开发分支,集成新功能feature/*
:功能分支,从 featureelop
分支创建,用于开发新功能release/*
:发布分支,从 featureelop
分支创建,用于测试和修复hotfix/*
:热修复分支,从 master
分支创建,用于紧急修复
2. GitHub Flow(持续交付型)
main
:主分支,随时可部署到生产环境feature/*
:功能分支,从 main
分支创建,开发完成后通过 Pull Request 合并hotfix/*
:热修复分支,从 main
分支创建,用于紧急修复
3. GitLab Flow(环境驱动型)
production
:生产环境分支,对应线上版本staging
:预发布分支,用于集成测试pre-production
:预生产分支,用于最终测试feature/*
:功能分支,从 staging
分支创建
二、中小团队的分支管理规范
1. 核心分支
master
:主分支,存放稳定、可发布的代码test
:测试分支,用于集成测试和 Bug 修复release/*
:发版分支,从 test
分支创建,用于发布前的最终验证
2. 开发分支
feature/*
:开发分支,每个开发人员从 test
分支创建自己的开发分支 - 命名规范:
feature/姓名缩写-功能描述
,如 feature/zhangsan-login
- 开发完成后,通过 Pull Request 合并到
test
分支
📌 分支策略说明
分支类型 | 命名规范 | 用途 | 来源分支 |
---|
主分支 | master | 生产环境代码,仅允许通过 release 分支合并。 | release/* |
测试分支 | test | 集成所有开发完成的 feature-* 分支,用于测试环境验证。 | feature-* |
发布分支 | release/vX.Y.Z | 基于 test 分支创建,用于预发布验证和紧急修复(如 release/v1.0.0 )。 | test |
开发分支 | feature-* | 开发者个人分支,按姓名缩写-功能描述 命名(如 feature/zhangsan-login )。 | test |
🔧 具体操作命令
1. 初始化分支结构(首次设置)
git checkout master
git pull origin master
git checkout -b test
git push origin test
git checkout test
git checkout -b release/v1.0.0
git push origin release/v1.0.0
2. 开发者日常操作
① 创建个人开发分支(基于 test
分支)
git checkout test
git pull origin test
git checkout -b feature/zhangsan-login
git push origin feature/zhangsan-login
② 开发完成后合并到 test
分支
git checkout test
git pull origin test
git merge feature/zhangsan-login
git push origin test
git branch -d feature/zhangsan-login
3. 发布流程
① 从 test
创建发布分支
git checkout test
git pull origin test
git checkout -b release/v1.1.0
git push origin release/v1.1.0
② 发布验证后合并到 master
git checkout master
git pull origin master
git merge release/v1.1.0
git tag -a v1.1.0 -m "Release v1.1.0"# 打版本标签
git push origin master --tags
③ 紧急修复(直接在发布分支处理)
git checkout release/v1.1.0
git commit -m "fix: 紧急修复XX问题"
git push origin release/v1.1.0
⚠️ 关键注意事项
- 分支保护
- 在 GitHub/GitLab 中设置:
master
和 release/*
分支为 Protected,仅允许管理员合并。test
分支允许开发者合并,但需通过 Pull/Merge Request 审核。
- 命名规范
- 发布分支用语义化版本号(如
release/v1.0.0
),避免混淆。 - 功能分支统一前缀
feature-*
(如 feature-payment
)。
- 冲突解决
- 所有冲突在
feature-*
或 test
分支解决,禁止直接修改 master
或 release
。
- 定期清理
- 发布完成后,删除已合并的
feature-*
分支和过时的 release/*
分支。
🔄 流程图示
master
│
└── release/v1.0.0 (从 test 创建)│└── test (从 master 创建)│├── feature-login (开发分支)└── feature-payment (开发分支)
📚 协作规范建议
- 代码审查:所有合并到
test
或 master
的代码需通过 Pull Request。 - 提交信息:使用规范格式(如
feat: 添加登录功能
、fix: 修复支付bug
)。 - 自动化工具:结合 CI/CD(如 GitHub Actions)自动部署
test
分支到测试环境。