1. 分支策略概述
推荐采用 Git Flow 或 简化Git Flow 作为基础分支策略,根据团队规模选择适合的方案。
2. 核心分支结构
2.1 主要分支
main/master - 生产环境对应分支,只接受合并,禁止直接提交
develop - 开发主分支,功能集成分支
2.2 支持性分支
feature/* - 功能开发分支
release/* - 发布准备分支
hotfix/* - 紧急修复分支
support/* - 版本支持分支(可选)
3. 详细分支规范
3.1 功能开发分支 (Feature Branches)
- 分支来源: develop
- 命名规范:
feature/[功能简写]-[JIRA编号]- 示例:
feature/user-auth-PROJ-123
- 示例:
- 合并目标: develop
- 生命周期: 功能开发完成并通过测试后删除
3.2 发布分支 (Release Branches)
- 分支来源: develop
- 命名规范:
release/[版本号]- 示例:
release/v1.2.0
- 示例:
- 用途: 版本发布前的最后测试、bug修复
- 合并目标: develop 和 main
3.3 热修复分支 (Hotfix Branches)
- 分支来源: main
- 命名规范:
hotfix/[简要描述]- 示例:
hotfix/critical-security-fix
- 示例:
- 合并目标: develop 和 main
- 用途: 生产环境紧急bug修复
4. 开发工作流程
4.1 新功能开发流程
# 1. 创建功能分支
git checkout develop
git pull origin develop
git checkout -b feature/user-auth-PROJ-123
# 2. 开发并定期提交
git add .
git commit -m "feat: 实现用户登录功能 PROJ-123"
# 3. 推送到远程
git push -u origin feature/user-auth-PROJ-123
# 4. 创建Pull Request到develop分支
4.2 代码审查与合并
- 所有合并必须通过Pull Request
- 至少需要1名团队成员审核
- 通过CI/CD流水线检查
- 使用Squash Merge保持提交历史整洁
5. 提交信息规范
采用约定式提交(Conventional Commits):
feat: 添加新功能
fix: 修复bug
docs: 文档更新
style: 代码格式调整
refactor: 代码重构
test: 测试相关
chore: 构建过程或辅助工具变动
示例:
feat(auth): 实现OAuth2登录功能 PROJ-123
- 添加Google OAuth2支持
- 更新用户认证中间件
- 添加相关单元测试
6. 分支保护规则
6.1 保护分支
- main/master: 禁止直接推送,必须通过PR
- develop: 禁止直接推送,必须通过PR
6.2 PR要求
- 至少1个审核通过
- CI/CD流水线通过
- 解决所有代码冲突
- 符合代码规范检查
7. 版本发布流程
7.1 常规发布
# 1. 创建发布分支
git checkout -b release/v1.2.0 develop
# 2. 进行最终测试和bug修复
# 3. 合并到main和develop
git checkout main
git merge --no-ff release/v1.2.0
git tag -a v1.2.0 -m "Release v1.2.0"
git checkout develop
git merge --no-ff release/v1.2.0
# 4. 删除发布分支
git branch -d release/v1.2.0
8. 团队协作规范
8.1 日常操作
- 每天开始工作前先拉取最新代码
- 频繁提交小改动,保持提交原子性
- 及时删除已合并的本地和远程分支
8.2 冲突解决
- 在功能分支上rebase develop分支解决冲突
- 禁止在公共分支上强制推送
- 复杂冲突需要双人协作解决
9. 环境对应关系
main | 生产环境 | 稳定版本
develop | 测试环境 | 集成测试版本
feature/* | 开发环境 | 功能开发分支
10. 工具推荐
10.1 Git客户端
- 命令行Git
- GitKraken
- SourceTree
- VS Code Git 集成
10.2 辅助工具
- Git Hooks(预提交检查)
- Husky(Git钩子管理)
- Commitlint(提交信息验证)
11. 特殊情况处理
11.1 大型功能开发
- 从develop创建feature分支
- 定期rebase develop保持同步
- 将大功能拆分为小PR分批合并
11.2 多版本维护
- 从main创建support分支
- 只接受bug修复PR
- 定期合并到develop
12. 最佳实践总结
- 保持分支简洁 - 及时删除已合并分支
- 小步提交 - 频繁提交,每次解决一个问题
- 代码审查 - 所有更改都要经过审查
- 自动化测试 - 确保代码质量
- 文档完善 - 维护清晰的README和变更日志