文章目录
- 一、Git Flow分支管理模型(又称:Git Flow工作流)
- 1.1 核心分支
- 1.2 辅助/临时 分支
- 1.3 详细描述
- 1.4 总体概述(图示)
- 二、软件环境管理规范
- 三、环境与分支映射
- 四、Git提交规范详解
- 4.1 提交类型速查表
- 4.2 提交格式要求
- 五、最佳实践指南
- 5.1 单次提交注意事项
- 5.2 工作流示例
- 5.3 版本发布流程
- 六、规范的价值
一、Git Flow分支管理模型(又称:Git Flow工作流)
1.1 核心分支
我们采用Git Flow工作流,主要包含以下两个贯穿整个项目生命周期的核心分支:
master / main:生产环境主干分支,简称:主分支,始终保持稳定可发布状态- 作用:存放稳定、可随时部署到生产环境的代码
- 特点:
- 不允许直接在此分支上开发,仅允许通过
release或hotfix分支合并 - 分支上的每一个提交都对应一个正式的发布版本
- 通常会被打上版本标签(如
v1.0.0,v1.0.1)
- 不允许直接在此分支上开发,仅允许通过
develop:集成开发分支,简称:开发分支,包含最新完成的功能和修复- 作用:存放最新开发成果的集成分支,是功能开发的集线器。
- 特点:
- 当
develop分支上的代码达到稳定状态并准备发布时,会合并到主分支 - 所有
feature分支和release分支都从develop分支拉取 - 始终保持代码可测试状态
- 当
1.2 辅助/临时 分支
| 分支类型 | 分支名称 | 命名规范 | 创建来源 | 合并目标 | 使用场景 |
|---|---|---|---|---|---|
| feature | 功能分支 | feature/模块名_功能描述 | develop | develop | 新功能开发 |
| release | 预发布分支 | release/版本号 | develop | master和develop | 版本发布准备 |
| hotfix | 热修复分支 | hotfix/问题描述 | master | master和develop | 紧急修复生产问题 |
上述分支是为了完成特定任务而创建的,任务完成后会被合并并删除
1.3 详细描述
master主分支,也是用于部署生产环境的分支,需要确保master分支稳定性。master分支一般由release以及hotfix分支合并,任何时间都不能直接修改代码。develop开发分支,始终保持最新完成以及bug修复后的代码,用于前后端联调。一般开发的新功能时,feature分支都是基于develop分支创建的。feature开发新功能时,以develop为基础创建feature分支。分支命名时以feature/开头,后面可以加上开发的功能模块,命名示例:feature/user_module、feature/cart_module- 作用:开发新功能
- 生命周期:
- 从
develop分支拉取。 - 开发完成后,合并回
develop分支。 - 合并后,该功能分支通常被删除。
- 从
release预发布分支(预上线分支),UAT测试阶段使用。一般由develop分支合并,不建议在此分支上直接修改代码。- 作用:为发布新版本做准备。在此分支上只做Bug修复、生成版本号、整理文档等发布准备工作,不再添加新功能。
- 生命周期:
- 当
develop分支的功能足够进行一次发布时,从develop拉出release分支。 - 在此分支上进行最后的测试和修复。
- 准备就绪后,将
release分支合并到主分支并打上版本标签。 - 同时,还必须合并回
develop分支,因为release分支上的修复可能在develop分支上不存在。
- 当
hotfix线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支。修复完成后,需要合并到master分支和develop分支。- 作用:快速修复生产环境(
master分支)上的紧急Bug - 生命周期:
- 从
master分支上出现 Bug 的提交点(通常是最近的标签)拉取。 - 修复完成后,合并回
master分支并打上新的版本标签(如v1.0.1)。 - 同时,还必须合并回
develop分支,确保修复在后续开发中也生效。
- 从
- 作用:快速修复生产环境(
1.4 总体概述(图示)
二、软件环境管理规范
| 环境 | 名称 | 使用场景 | 特点 | 备注 |
|---|---|---|---|---|
| DEV | 开发环境 | 开发人员日常编码、调试和集成测试的环境 | 不稳定,频繁更新,包含最新的开发代码 | 通常使用测试数据或开发数据 |
| FAT | 功能验收测试环境 也称SIT(系统集成测试环境) | 进行功能测试、集成测试和回归测试 | 相对稳定,定期部署,模拟生产环境配置 | 使用者是测试团队 |
| UAT | 用户验收测试环境 | 最终用户或业务方进行验收测试 | 与生产环境高度一致,数据接近真实 | 使用者是产品经理、业务方、最终用户 |
| PRO | 生产环境 | 对外提供服务的实际运行环境 | 最稳定,经过充分测试,有严格的发布流程 | 有完善的监控和报警机制 |
三、环境与分支映射
| 环境 | 对应分支 | 访问权限 | 用途 |
|---|---|---|---|
| DEV | develop | 开发 | 日常开发联调 |
| DEV | feature | 开发 | 实现新特性 |
| FAT | release | 开发,测试 | 功能测试 |
| UAT | release | 产品,客户 | 用户验收测试 |
| UAT | hotfix | 开发,测试 | 修复线上bug |
| PRO | master | 开发,运维 | 生产环境 |
四、Git提交规范详解
4.1 提交类型速查表
| 类型 | 使用场景 | 示例 |
|---|---|---|
| init | 项目初始化/脚手架搭建 | [init] 创建Vue3+TS项目骨架 |
| feat | 新增功能或特性 | [feat] 购物车添加批量删除功能 |
| fix | 修复BUG(线上/测试环境) | [fix] 解决支付页面金额计算错误问题 |
| perf | 性能优化(不影响功能逻辑) | [perf] 优化图片加载,首屏时间减少30% |
| refactor | 代码重构(不改变外部行为) | [refactor] 提取用户验证逻辑到独立模块 |
| revert | 回滚某次提交 | [revert] 回退登录页第三方登录功能 |
| style | 代码格式化(空格、缩进等,不改变逻辑) | [style] 统一使用2空格缩进 |
| docs | 文档更新 | [docs] 更新API接口文档 |
| test | 测试用例添加/修改 | [test] 添加用户注册模块单元测试 |
| chore | 构建过程或辅助工具的变动 | [chore] 更新webpack配置 |
| upgrade | 依赖库升级 | [upgrade] 升级Ant Design到v5.0 |
4.2 提交格式要求
- 标题格式:
[类型] 简短描述(不超过50字符)- 类型使用小写英文
- 描述使用现在时态
- 不加句号结尾
- 正文内容(可选):
- 空一行后补充详细说明
- 解释修改原因和影响范围
- 可包含相关issue链接
- 优秀示例:
[feat] 实现用户个人中心基础布局 新增以下组件: - 个人信息卡片 - 订单概览模块 - 地址管理入口 关联需求:#PROJ-123
五、最佳实践指南
5.1 单次提交注意事项
- 提交问题必须为同一类别
- 提交问题不要超过3个
- 发现不规范提交可使用:
或者重新提交一次:gitcommit--amend-m"[提交类型] 新的提交信息"gitreset--hardHEAD
5.2 工作流示例
新功能开发:
gitcheckout developgitpullgitcheckout-bfeature/user_profile# 开发完成后...gitcommit-m"[feat] 新增用户个人主页"gitpush origin feature/user_profile紧急修复:
gitcheckout mastergitpullgitcheckout-bhotfix/payment_bug# 修复后...gitcommit-m"[fix] 解决支付接口超时问题"gitcheckout mastergitmerge hotfix/payment_buggitpush
5.3 版本发布流程
- 从
develop创建release分支 - 在
release分支进行最终测试 - 合并到
master并打 tag - 同步回
develop分支
六、规范的价值
- 提升可读性:通过提交信息快速理解变更意图
- 自动化支持:便于生成CHANGELOG和版本说明
- 高效协作:降低团队沟通成本
- 精准回溯:方便定位问题和回滚变更
提示:建议团队使用Git钩子(pre-commit)或CI流程自动校验提交信息格式,确保规范执行一致性。
通过遵循这套规范,团队可以建立清晰可追溯的代码变更历史,大幅提升协作效率和代码质量。刚开始可能需要适应,但形成习惯后将显著改善开发体验。