🚀 开发团队 Git 提交发布规范
📋 目录
🌳 分支策略
主要分支
🔒 stable 分支(保护分支)
用途 :生产环境代码,对外发布的稳定版本
特点 :
受保护,不允许直接推送
只能通过 Pull Request 合并
每次合并都是一个发布版本
必须经过代码审查
🧪 dev 分支(测试分支)
用途 :开发测试环境,集成最新功能
特点 :
开发人员的主要工作分支
包含最新的开发进度
用于功能测试和集成测试
🔧 功能分支(临时分支)
命名规范 :feat-YYYYMMDD-功能名
示例 :
feat-20241201-用户登录优化
feat-20241201-数据导出功能
feat-20241201-bundle优化
🔄 开发流程
1. 开始新功能开发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 git checkout dev git pull origin dev git merge origin/stable git checkout -b feat-20241201-新功能名 git push -u origin feat-20241201-新功能名
2. 开发过程中
1 2 3 4 5 6 git add . git commit -m "feat: 实现用户登录验证逻辑" git push origin feat-20241201-新功能名
3. 完成小功能后合并到 dev
1 2 3 4 5 6 7 8 9 10 11 12 13 14 git checkout dev git pull origin dev git merge feat-20241201-新功能名 git push origin dev git branch -d feat-20241201-新功能名
📝 提交规范
Commit Message 格式
1 2 3 4 5 <type > (<scope > ): <subject > <body > <footer >
Type 类型
类型
描述
示例
feat
新功能
feat: 添加用户登录功能
fix
修复 bug
fix: 修复登录页面验证码显示问题
docs
文档更新
docs: 更新 API 文档
style
代码格式调整
style: 统一代码缩进格式
refactor
代码重构
refactor: 重构用户管理模块
perf
性能优化
perf: 优化 bundle 大小
test
测试相关
test: 添加登录功能单元测试
chore
构建/工具相关
chore: 更新 webpack 配置
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 git commit -m "feat(auth): 添加JWT token验证中间件 - 实现token生成和验证逻辑 - 添加token过期处理 - 集成到登录接口 Closes #123" git commit -m "修改了一些东西" git commit -m "fix bug" git commit -m "更新"
👥 多人协作避免冲突
🛡️ 预防冲突策略
1. 保持同步
1 2 3 4 5 git checkout dev git pull origin dev git checkout feat-20241201-我的功能 git merge dev
2. 小步快跑
✅ 频繁提交 :每完成一个小功能就提交
✅ 及时推送 :避免本地积累太多代码
✅ 定期合并 :每天至少合并一次到 dev
3. 分工明确
1 2 3 4 5 6 7 8 9 10 📁 前端团队 ├── 张三 负责 用户模块 (src/pages/User/) ├── 李四 负责 订单模块 (src/pages/Order/) └── 王五 负责 公共组件 (src/components/) 📁 后端团队 ├── 赵六 负责 用户服务 (services/user/) ├── 钱七 负责 订单服务 (services/order/) └── 孙八 负责 基础设施 (infrastructure/)
🔧 冲突解决流程
当遇到合并冲突时:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 git pull origin dev <<<<<<< HEAD // 你的代码 const userName = user.name; ======= // 别人的代码 const userName = user.fullName; >>>>>>> dev # 4. 手动解决冲突,保留正确的代码 const userName = user.fullName; // 保留正确的版本 # 5. 标记冲突已解决 git add src/components/Header.tsx # 6. 完成合并 git commit -m "resolve: 解决用户名显示冲突"
🎯 冲突解决最佳实践
沟通优先 :发现冲突先与相关同事沟通
理解代码 :不要盲目删除别人的代码
测试验证 :解决冲突后务必测试功能
文档记录 :复杂冲突要在提交信息中说明
🚨 紧急修复流程(Hotfix)
场景:生产环境发现严重 bug,需要紧急修复
🔥 紧急修复步骤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 git checkout stable git pull origin stable git checkout -b hotfix-20241201-修复登录bug git add . git commit -m "hotfix: 修复用户登录验证失败问题 - 修复 JWT token 验证逻辑错误 - 添加异常处理机制 - 紧急修复生产环境问题 Fixes #456" git push origin hotfix-20241201-修复登录bug
🔄 Hotfix 合并策略
1 2 3 4 5 6 7 8 9 10 11 12 13 git checkout stable git merge hotfix-20241201-修复登录bug git push origin stable git checkout dev git merge stable git push origin dev git branch -d hotfix-20241201-修复登录bug git push origin --delete hotfix-20241201-修复登录bug
⚠️ Hotfix 注意事项
🎯 专注修复 :只修复当前问题,不添加新功能
⚡ 快速响应 :从发现到修复上线控制在 2 小时内
📞 及时通知 :修复完成后通知相关团队成员
📋 文档记录 :在项目文档中记录修复过程
🚀 发版流程
📅 定期发版(每周/每两周)
1. 发版前准备
1 2 3 4 5 6 7 8 9 10 11 12 git checkout dev git pull origin dev npm run test npm run e2e npm run build npm run lint npm run type-check
2. 创建发版 PR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 git checkout -b release-v1.2.0 git add . git commit -m "chore: 发布 v1.2.0 版本 新功能: - 用户登录优化 - 数据导出功能 - Bundle 大小优化 Bug 修复: - 修复表格排序问题 - 修复移动端适配问题 性能优化: - 减少 bundle 大小 56% - 优化首屏加载时间" git push origin release-v1.2.0
3. Code Review 流程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ## 📋 发版 Code Review 检查清单 ### 功能检查 - [ ] 所有新功能正常工作- [ ] 没有破坏现有功能- [ ] 浏览器兼容性测试通过### 代码质量 - [ ] 代码符合团队规范- [ ] 没有明显的性能问题- [ ] 错误处理完善- [ ] 注释和文档完整### 安全检查 - [ ] 没有敏感信息泄露- [ ] 输入验证完善- [ ] 权限控制正确### 测试覆盖 - [ ] 单元测试通过- [ ] 集成测试通过- [ ] E2E 测试通过
4. 合并到 stable 并发布
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 git checkout stable git merge release-v1.2.0 git push origin stable git tag -a v1.2.0 -m "发布 v1.2.0 版本 主要更新: - 用户体验优化 - 性能提升 56% - Bug 修复" git push origin v1.2.0 git branch -d release-v1.2.0 git push origin --delete release-v1.2.0
💡 最佳实践
🎯 代码提交最佳实践
✅ 好习惯
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 git status git diff git add -p git commit -m "feat(user): 添加用户头像上传功能 - 支持 jpg, png, gif 格式 - 自动压缩大于 2MB 的图片 - 添加上传进度显示 Closes #123" git log --oneline -5 git push origin feat-20241201-头像上传
❌ 避免的坏习惯
1 2 3 4 git add . git commit -m "fix" git push --force
🔍 代码审查最佳实践
审查者指南
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ## 🔍 Code Review 关注点 ### 1. 功能正确性 - 代码是否实现了预期功能?- 边界条件是否处理正确?- 错误处理是否完善?### 2. 代码质量 - 代码是否易读易懂?- 是否遵循团队编码规范?- 是否有重复代码?### 3. 性能考虑 - 是否有性能瓶颈?- 数据库查询是否优化?- 前端资源是否合理加载?### 4. 安全性 - 是否有安全漏洞?- 用户输入是否验证?- 敏感数据是否保护?
被审查者指南
1 2 3 4 5 6 7 8 ## 📝 提交 PR 前检查清单 - [ ] 代码已经自测通过- [ ] 添加了必要的测试用例- [ ] 更新了相关文档- [ ] 提交信息清晰明确- [ ] 没有调试代码和注释- [ ] 代码格式化完成
🛠️ 常见问题解决
Q1: 忘记从 stable 合并就开始开发了怎么办?
1 2 3 4 git checkout feat-20241201-我的功能 git merge origin/stable
Q2: 功能分支太久没合并,与 dev 差异很大?
1 2 3 4 git checkout feat-20241201-我的功能 git merge origin/dev
Q3: 误提交了敏感信息怎么办?
1 2 3 4 5 6 7 git reset --soft HEAD~1 git revert <commit-hash>
Q4: 多人同时修改同一文件怎么避免冲突?
1 2 3 4 5 6 ## 🤝 协作策略 1. **提前沟通** :修改共享文件前先在群里说一声2. **模块化开发** :尽量将功能拆分到不同文件3. **定期同步** :每天开始工作前先同步最新代码4. **小步快跑** :频繁提交,避免大批量修改
Q5: 如何回滚已发布的版本?
1 2 3 4 5 6 7 8 git checkout stable git revert <problematic-commit> git push origin stable git reset --hard <previous-good-commit> git push --force origin stable
📊 工作流程图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 graph TD A[开始新功能] --> B[切换到 dev 分支] B --> C[合并 stable 到 dev] C --> D[创建功能分支 feat-date-name] D --> E[开发功能] E --> F[提交代码] F --> G{功能完成?} G -->|否| E G -->|是| H[合并到 dev 分支] H --> I[删除功能分支] I --> J{准备发版?} J -->|否| A J -->|是| K[创建发版分支] K --> L[Code Review] L --> M[合并到 stable] M --> N[创建 Tag] N --> O[部署生产环境] O --> P[发版完成] Q[紧急修复] --> R[从 stable 创建 hotfix] R --> S[修复 bug] S --> T[合并到 stable] T --> U[同步到 dev] U --> V[删除 hotfix 分支]
🎉 总结
这套 Git 工作流程的核心理念是:
🔒 稳定优先 :stable 分支始终保持可发布状态
🧪 持续集成 :dev 分支集成最新开发进度
🚀 快速迭代 :功能分支支持并行开发
🛡️ 风险控制 :通过 Code Review 保证代码质量
📞 团队协作 :通过规范和沟通避免冲突
遵循这套规范,我们的团队可以:
✅ 高效协作,减少冲突
✅ 保证代码质量
✅ 快速响应线上问题
✅ 稳定可靠地发布版本
记住 :规范是为了更好地协作,不是为了限制创造力。在实际使用中,可以根据团队情况灵活调整!🚀