背景介绍
在多人协作的项目中,Git 分支管理是一个关键问题。没有规范的工作流,很容易导致分支混乱、代码冲突和版本回退困难。
Git Flow 是一个成熟的分支管理模型,可以帮助团队有序地进行开发和发布。
一、分支类型说明
| 分支类型 | 命名规范 | 用途 | 生命周期 |
|---|---|---|---|
| 主分支 | main / master | 生产环境代码 | 长期存在 |
| 开发分支 | develop | 日常开发集成 | 长期存在 |
| 功能分支 | feature/* | 开发新功能 | 临时 |
| 发布分支 | release/* | 发布准备 | 临时 |
| 修复分支 | hotfix/* | 紧急修复 | 临时 |
二、分支命名规范
功能分支:
feature/user-login
feature/payment-module
feature/issue-123
发布分支:
release/1.0.0
release/2.1.0-beta
修复分支:
hotfix/security-patch
hotfix/issue-456
三、工作流程详解
1. 初始化项目:
# 创建 develop 分支
git checkout -b develop main
# 推送到远程
git push -u origin develop
2. 开发新功能:
# 从 develop 创建功能分支
git checkout -b feature/user-login develop
# 开发完成后合并回 develop
git checkout develop
git merge --no-ff feature/user-login
git push origin develop
# 删除本地功能分支
git branch -d feature/user-login
3. 准备发布:
# 创建发布分支
git checkout -b release/1.0.0 develop
# 进行发布准备(修复 bug、更新版本号)
# ...
# 合并到 main
git checkout main
git merge --no-ff release/1.0.0
# 打标签
git tag -a v1.0.0 -m "Release version 1.0.0"
# 合并到 develop
git checkout develop
git merge --no-ff release/1.0.0
# 删除发布分支
git branch -d release/1.0.0
4. 紧急修复:
# 从 main 创建修复分支
git checkout -b hotfix/security-patch main
# 修复问题
# ...
# 合并到 main
git checkout main
git merge --no-ff hotfix/security-patch
git tag -a v1.0.1 -m "Hotfix version 1.0.1"
# 合并到 develop
git checkout develop
git merge --no-ff hotfix/security-patch
# 删除修复分支
git branch -d hotfix/security-patch
四、合并策略
1. 使用 --no-ff 选项:
- 保留完整的分支历史
- 便于追踪功能开发过程
- 在 git log 中形成清晰的分支结构
2. Pull Request 流程:
- 开发者创建功能分支
- 推送分支到远程仓库
- 创建 Pull Request
- 团队成员代码审查
- 通过审查后合并
3. 代码审查要点:
- 代码质量
- 逻辑正确性
- 测试覆盖率
- 代码风格一致性
五、标签管理
标签命名规范:
# 版本标签
git tag -a v1.0.0 -m "Release version 1.0.0"
# 推送标签到远程
git push origin v1.0.0
# 列出所有标签
git tag -l
# 查看标签详情
git show v1.0.0
六、常见问题与解决方案
- 分支冲突:定期从 develop 拉取最新代码
- 合并混乱:使用 --no-ff 保持历史清晰
- 忘记合并 hotfix:建立检查清单
- 标签丢失:确保推送标签到远程
七、团队协作规范
代码提交规范:
feat: 添加用户登录功能
fix: 修复支付回调问题
docs: 更新 API 文档
style: 代码格式调整
refactor: 重构用户模块
test: 添加单元测试
chore: 更新依赖版本
每日流程:
- 早上:拉取 develop 最新代码
- 开发:在功能分支上工作
- 提交:频繁提交,保持提交粒度小
- 推送:每天推送代码到远程
八、工具推荐
- git-flow:Git Flow 命令行工具
- Sourcetree:可视化 Git 客户端
- GitHub Desktop:GitHub 官方客户端
- GitLens:VS Code 插件
总结
Git Flow 提供了一套清晰的分支管理策略,可以帮助团队:
- 保持代码库整洁有序
- 减少代码冲突
- 便于追踪功能开发
- 支持快速发布和紧急修复
关键在于团队成员都要遵守规范,养成良好的 Git 使用习惯。