articles

Git 开发分支最佳实践

coding
git

Pearls of silky soft white cotton, bubble up under vibrant lighting

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. 最佳实践总结

  1. 保持分支简洁 - 及时删除已合并分支
  2. 小步提交 - 频繁提交,每次解决一个问题
  3. 代码审查 - 所有更改都要经过审查
  4. 自动化测试 - 确保代码质量
  5. 文档完善 - 维护清晰的README和变更日志