统一的 Git 提交信息规范能大幅提升代码历史的可读性,配合 AI 工具自动生成,零学习成本。

规范总览

格式

1
2
3
4
5
6
- <emoji> <type>(<scope>): <subject>
-
- <body 行1>
- <body 行2>
-
- <footer>

示例

1
2
3
4
5
6
- ✨ feat(api): 添加用户登录接口
-
- 新增 JWT 认证流程,包含 token 刷新和过期处理。
- 使用 Redis 缓存 session 提升性能。
-
- Closes #42
1
2
3
- 🐛 fix(components): 修复日期选择器样式错乱
-
- Safari 下 flex 布局未正确渲染,改用 grid 布局替代。
1
- 📝 docs: 更新 API 文档

Type 与 Emoji 映射

Emoji Type 说明
feat 添加新功能
🐛 fix 修复 bug
📝 docs 对文档进行修改
♻️ refactor 代码重构
perf 提高性能的代码修改
🧑‍💻 dx 优化开发体验
🔨 workflow 工作流变动
🏷️ types 类型声明修改
🚧 wip 工作进行中
test 测试用例添加及修改
🔨 build 构建系统或依赖变更
👷 ci CI 配置变更
chore 其它杂项修改
⬆️ deps 依赖项修改
🔖 release 发布新版本

详细规则

Subject(必填)

  • 不超过 50 个字符
  • 使用祈使句,如"添加"而非"添加了"
  • 结尾不使用句号

Body(可选)

  • 每行不超过 72 个字符
  • 详细描述更改的原因,而非"做了什么"
  • 若无复杂逻辑可省略

Footer(可选)

  • 引用 Issue:Closes #123
  • 重大变更(Breaking Change)在此说明
  • 若无则省略

配置方式

1. VSCode(完整配置)

打开 VSCode 命令面板(Cmd + Shift + P),执行 Preferences: Open User Settings (JSON),在 settings.json 中添加以下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"github.copilot.chat.localeOverride": "zh-CN",
"github.copilot.chat.commitMessageGeneration.instructions": [
{
"text": "所有 Git 提交信息必须严格使用简体中文。"
},
{
"text": "输出格式要求:每一行内容必须以 '- '(连字符加空格)开头。"
},
{
"text": "结构示例:\n- <emoji> <type>(<scope>): <subject>\n- \n- <body 行1>\n- <body 行2>\n- \n- <footer>"
},
{
"text": "Type 与 Emoji 映射规则(仅允许使用以下组合):\n- ✨ feat: 添加新功能\n- 🐛 fix: 修复 bug\n- 📝 docs: 对文档进行修改\n- ♻️ refactor: 代码重构\n- ⚡ perf: 提高性能的代码修改\n- 🧑‍💻 dx: 优化开发体验\n- 🔨 workflow: 工作流变动\n- 🏷️ types: 类型声明修改\n- 🚧 wip: 工作进行中\n- ✅ test: 测试用例添加及修改\n- 🔨 build: 构建系统或依赖变更\n- 👷 ci: CI 配置变更\n- ❓ chore: 其它杂项修改\n- ⬆️ deps: 依赖项修改\n- 🔖 release: 发布新版本"
},
{
"text": "Subject 要求:简洁明了,不超过 50 个字符;使用祈使句;结尾不使用句号。"
},
{
"text": "Body 要求:详细描述更改原因;每行不超过 72 个字符。"
},
{
"text": "重要约束:最终输出只包含纯文本提交信息,严禁使用 Markdown 代码块包裹,严禁包含任何解释性文字。"
}
]

配置好之后,在 VSCode 源码管理面板(Ctrl + Shift + G)写提交信息时,Copilot 会自动输出符合规范的提交信息。

2. Claude Code(完整配置)

~/.claude/CLAUDE.md(全局)或项目根目录的 CLAUDE.md(项目级)中添加:

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
27
28
29
30
31
---
alwaysApply: true
scene: git_message
---

# Git 提交信息规范

- 所有 git commit message 必须使用简体中文。
- 严格使用以下格式输出:`<emoji> <type>: <中文简短描述>`
- 只允许使用以下类型与前缀:

- `✨ feat: 添加新功能`
- `🐛 fix: 修复 bug`
- `📝 docs: 对文档进行修改`
- `♻️ refactor: 代码重构`
- `⚡ perf: 提高性能的代码修改`
- `🧑‍💻 dx: 优化开发体验`
- `🔨 workflow: 工作流变动`
- `🏷️ types: 类型声明修改`
- `🚧 wip: 工作进行中`
- `✅ test: 测试用例添加及修改`
- `🔨 build: 构建系统或依赖变更`
- `👷 ci: CI 配置变更`
- `❓ chore: 其它杂项修改`
- `⬆️ deps: 依赖项修改`
- `🔖 release: 发布新版本`

- 需要多行时,每行以 `- ` 开头,形成一个列表。
- 第一行是摘要,后续行是详细说明(每行 ≤ 72 字符)。

- **重要约束**:最终输出只包含纯文本形式的 commit message,严禁使用 Markdown 代码块包裹,严禁包含任何解释性文字。

3. Hermes Agent

Hermes Agent 会自动加载 ~/.claude/CLAUDE.md 中的提交规范,生成提交信息时遵循相同的 emoji + type 格式。

使用效果

配置后,在 VSCode 源码管理面板写提交信息时,Copilot 会自动输出符合规范的提交信息:

1
2
3
4
5
6
7
# 输入:
添加登录页面

# Copilot 输出:
- ✨ feat(pages): 添加用户登录页面
-
- 实现手机号+验证码登录流程,包含表单校验和错误提示。

在 Claude Code 中运行 claude -p "提交当前更改" 也会生成符合规范的提交信息。

常见场景速查

场景 写法
新功能 ✨ feat(api): 添加商品搜索接口
修 Bug 🐛 fix(cart): 修复数量加减按钮失效
改文档 📝 docs: 更新部署说明
重构 ♻️ refactor(auth): 提取认证中间件
性能 ⚡ perf(list): 虚拟滚动优化长列表渲染
更新依赖 ⬆️ deps: 升级 FastAPI 到 0.110.0
CI 配置 👷 ci: 添加自动化测试工作流
发布版本 🔖 release: v2.1.0

相关工具:约定式提交规范