|
1 | | -# Git 提交信息生成指南 |
| 1 | +# Git 提交信息(AI 生成)规范 |
2 | 2 |
|
3 | | -## 基本要求 |
| 3 | +> 本说明用于约束 **AI 自动生成 Git 提交信息** 的格式和内容。 注意:**输出只能是提交信息本身,不要解释,不要包裹代码块。** |
4 | 4 |
|
5 | | -- 使用简洁明了的中文生成 commit message |
6 | | -- 每行不超过 50 个字符,保证在各种 Git 工具中良好显示 |
7 | | -- 使用动词开头,描述本次提交**做了什么**而不是**做什么** |
| 5 | +--- |
8 | 6 |
|
9 | | -## 提交类型分类 |
| 7 | +## 1. 总体要求 |
10 | 8 |
|
11 | | -按照以下类型对提交内容进行分类,使用标准格式:`<类型>: <描述>` |
| 9 | +1. 使用 **简洁明了的中文** 描述提交内容。 |
| 10 | +2. 使用 **动词开头**,描述本次提交「做了什么」。 |
| 11 | +3. 每一行不超过 **50 个汉字/字符**,尽量控制在 20–30 字内。 |
| 12 | +4. 关注业务价值和用户影响,而不是具体实现细节。 |
| 13 | +5. 输入可能是 diff、变更列表或自然语言描述,输出始终是 **规范化的提交信息行**。 |
12 | 14 |
|
13 | | -**重要**:类型标签必须用尖括号包围,例如 `<feat>:`、`<fix>:`、`<update>:` 等。 |
| 15 | +--- |
14 | 16 |
|
15 | | -### 优先级排序(高到低) |
| 17 | +## 2. 输出格式(必须遵守) |
16 | 18 |
|
17 | | -1. **fix**: 修复 bug 或问题 |
18 | | -2. **feat**: 新增功能或特性 |
19 | | -3. **refactor**: 重构代码(不改变功能) |
20 | | -4. **update**: 更新依赖、配置或现有功能 |
21 | | -5. **docs**: 文档相关修改 |
22 | | -6. **style**: 代码格式、样式调整 |
23 | | -7. **test**: 测试相关修改 |
24 | | -8. **chore**: 构建工具、辅助工具等修改 |
| 19 | +### 2.1 统一格式 |
25 | 20 |
|
26 | | -## 格式规范 |
| 21 | +无论是「单一类型」还是「多类型」提交,**输出格式完全一致**: |
27 | 22 |
|
28 | | -### 单一类型提交 |
| 23 | +- 每一行代表一种类型的总结 |
| 24 | +- 每一行的格式必须为: |
29 | 25 |
|
| 26 | +```text |
| 27 | +<类型>: 简要描述 |
30 | 28 | ``` |
31 | | -<类型> <简洁描述> |
32 | | -``` |
33 | 29 |
|
34 | | -### 多类型提交 |
| 30 | +- **不要** 输出总标题或概括性第一行 |
| 31 | +- **不要** 输出空行 |
| 32 | +- **不要** 添加解释性文字、前后说明或代码块 |
| 33 | +- **不要** 在类型前后省略尖括号或冒号 |
| 34 | + |
| 35 | +### 2.2 单一类型提交 |
35 | 36 |
|
36 | | -当一次提交包含多种类型的修改时,使用以下格式: |
| 37 | +- 只有一种主要修改类型时,只输出 **一行**: |
37 | 38 |
|
| 39 | +```text |
| 40 | +<feat>: 添加用户认证功能 |
38 | 41 | ``` |
39 | | -高度概括的标题 |
40 | 42 |
|
41 | | -<类型1> <修改描述1> |
42 | | -<类型2> <修改描述2> |
43 | | -<类型3> <修改描述3> |
| 43 | +### 2.3 多类型提交 |
| 44 | + |
| 45 | +- 同一次提交包含多种类型修改时: |
| 46 | + - 每种类型一行 |
| 47 | + - 按类型优先级从高到低排序(见下一节) |
| 48 | + - 所有行都是:`<类型>: 描述` |
| 49 | + - 不要添加额外标题或空行 |
| 50 | + |
| 51 | +示例: |
| 52 | + |
| 53 | +```text |
| 54 | +<fix>: 修复订单支付金额计算错误 |
| 55 | +<update>: 调整优惠券校验逻辑 |
| 56 | +<docs>: 补充支付流程说明文档 |
44 | 57 | ``` |
45 | 58 |
|
46 | | -**格式要求**: |
| 59 | +--- |
| 60 | + |
| 61 | +## 3. 类型与优先级 |
| 62 | + |
| 63 | +按优先级从高到低排序(用于多类型时的行顺序): |
| 64 | + |
| 65 | +1. `fix` —— 修复 bug 或问题 |
| 66 | +2. `feat` —— 新增功能或特性 |
| 67 | +3. `refactor` —— 重构代码但不改变对外行为 |
| 68 | +4. `update` —— 更新依赖、配置或现有功能行为 |
| 69 | +5. `docs` —— 文档相关修改 |
| 70 | +6. `style` —— 代码格式、样式调整(无逻辑变化) |
| 71 | +7. `test` —— 测试相关调整或新增 |
| 72 | +8. `chore` —— 构建、脚本、工具链等辅助改动 |
| 73 | + |
| 74 | +> **重要:** 类型标签必须用 **尖括号包裹**,并且后面紧跟冒号。 |
| 75 | +> |
| 76 | +> 例如:`<fix>:`、`<feat>:`、`<update>:`。 |
| 77 | +
|
| 78 | +--- |
| 79 | + |
| 80 | +## 4. 写作规则 |
| 81 | + |
| 82 | +1. **动词开头**: |
| 83 | + |
| 84 | +- ✅ `修复`、`优化`、`添加`、`调整`、`更新`、`补充` 等 |
| 85 | +- ❌ 避免名词开头的模糊表达,如 `登录问题`、`代码调整` 等 |
| 86 | + |
| 87 | +2. **现在时 + 主动语态**: |
| 88 | + |
| 89 | +- ✅ `修复登录页面响应异常` |
| 90 | +- ❌ `已修复登录页面响应异常` |
| 91 | +- ❌ `将修复登录页面响应异常` |
| 92 | + |
| 93 | +3. **避免技术细节和文件名堆砌**: |
47 | 94 |
|
48 | | -- 第一行:简洁的总体标题,概括本次提交的主要目的 |
49 | | -- 空一行 |
50 | | -- 后续行:每行都以尖括号包围的类型标签开头,按优先级从高到低排列 |
51 | | -- 类型标签必须用尖括号包围,例如 `<feat>`、`<fix>`、`<update>` 等 |
| 95 | +- 不要罗列具体文件名、类名、函数名 |
| 96 | +- 如必须提到技术词汇,保持简短且与业务直接相关 |
52 | 97 |
|
53 | | -## 注意事项 |
| 98 | +4. **关注业务和用户影响**: |
54 | 99 |
|
55 | | -- ❌ 不要罗列具体文件名 |
56 | | -- ❌ 不要使用过于技术化的术语 |
57 | | -- ✅ 专注于修改的**业务价值**和**用户影响** |
58 | | -- ✅ 使用主动语态和现在时态 |
59 | | -- ✅ 多类型提交时,总体标题应该高度概括整次提交的核心目标 |
60 | | -- ✅ 详细描述部分用尖括号标签分类说明具体修改内容 |
| 100 | +- ✅ `修复支付失败导致订单状态异常` |
| 101 | +- ✅ `优化列表加载,提升页面响应速度` |
| 102 | +- ❌ `重命名 user_helper.ts 和 order_util.ts` |
61 | 103 |
|
62 | | -## 示例 |
| 104 | +5. **多类型时的归类原则**: |
63 | 105 |
|
64 | | -**好的提交信息:** |
| 106 | +- 优先判断是否存在 bug 修复,若有则必须包含 `<fix>` 行 |
| 107 | +- 新增对外可感知功能使用 `<feat>` |
| 108 | +- 不改变行为但整理结构时用 `<refactor>` |
| 109 | +- 修改配置、依赖或已有功能行为偏「调整」用 `<update>` |
| 110 | +- 仅文档改动用 `<docs>` |
| 111 | +- 仅格式、空格、缩进等无逻辑变化用 `<style>` |
| 112 | +- 仅测试相关用 `<test>` |
| 113 | +- 构建脚本、CI、工具等用 `<chore>` |
65 | 114 |
|
66 | | -单一类型: |
| 115 | +6. **输出语言**: |
67 | 116 |
|
68 | | -- `<feat> 添加用户认证功能` |
69 | | -- `<fix> 修复登录页面响应异常` |
70 | | -- `<refactor> 优化数据库查询性能` |
| 117 | + - 无论输入语言是什么,输出一律使用 **中文**。 |
71 | 118 |
|
72 | | -多类型: |
| 119 | +--- |
73 | 120 |
|
| 121 | +## 5. 示例 |
| 122 | + |
| 123 | +### 5.1 单一类型示例 |
| 124 | + |
| 125 | +```text |
| 126 | +<feat>: 添加用户注册邮箱验证 |
| 127 | +<fix>: 修复登录态过期后无法自动跳转 |
| 128 | +<refactor>: 优化订单聚合服务结构 |
| 129 | +<update>: 更新支付网关超时时间配置 |
| 130 | +<docs>: 补充部署环境变量说明 |
| 131 | +<style>: 统一表单组件代码格式 |
| 132 | +<test>: 增加支付流程回归测试用例 |
| 133 | +<chore>: 调整打包脚本提升构建速度 |
| 134 | +``` |
| 135 | + |
| 136 | +### 5.2 多类型示例 |
| 137 | + |
| 138 | +示例一: |
| 139 | + |
| 140 | +```text |
| 141 | +<fix>: 修复优惠券折扣计算不正确 |
| 142 | +<update>: 调整订单结算税费规则 |
| 143 | +<docs>: 更新优惠使用说明文档 |
| 144 | +``` |
| 145 | + |
| 146 | +示例二: |
| 147 | + |
| 148 | +```text |
| 149 | +<feat>: 添加用户导出报表功能 |
| 150 | +<refactor>: 拆分报表生成模块结构 |
| 151 | +<test>: 增加报表导出边界用例 |
74 | 152 | ``` |
75 | | -完善Redis部署和访问配置 |
76 | 153 |
|
77 | | -<feat> 添加Redis外部访问功能 |
78 | | -<update> 修改Redis服务类型为NodePort |
79 | | -<docs> 添加Redis连接指南和网络分析文档 |
| 154 | +示例三: |
| 155 | + |
| 156 | +```text |
| 157 | +<update>: 升级数据库驱动版本 |
| 158 | +<chore>: 调整CI脚本以兼容新驱动 |
80 | 159 | ``` |
81 | 160 |
|
82 | | -**不好的提交信息:** |
| 161 | +--- |
| 162 | + |
| 163 | +## 6. 生成策略建议(面向 AI) |
| 164 | + |
| 165 | +1. 先从输入内容中识别所有涉及的类型:bug 修复、新功能、重构、配置更新、文档、样式、测试、构建脚本等。 |
| 166 | +2. 为每个实际涉及的类型生成一句总结,遵循: |
| 167 | + |
| 168 | +- 动词开头 |
| 169 | +- 业务导向 |
| 170 | +- 不超过 50 字 |
| 171 | + |
| 172 | +3. 将这些类型按优先级排序后输出为多行: |
| 173 | + |
| 174 | +- 排序顺序:`fix > feat > refactor > update > docs > style > test > chore` |
| 175 | + |
| 176 | +4. 若只识别出一种类型,只输出一行。 |
| 177 | +5. 严格使用格式:`<类型>: 描述`,不添加任何其他文本、标题、空行或代码块。 |
83 | 178 |
|
84 | | -- `更新了 auth.js 和 login.vue` |
85 | | -- `修改` |
86 | | -- `完成开发任务` |
87 | | -- `feat: 主要功能` (没有使用尖括号包围类型标签) |
88 | | -- 缺少总体标题的多类型提交 |
|
0 commit comments