8.3.1 提交信息的标准格式
Conventional Commits 规范定义了一套结构化的提交信息格式,让人和机器都能轻松理解。
完整格式
<type>(<scope>): <subject>
<空行>
<body>
<空行>
<footer>各部分详解
1. Header(必需)
<type>(<scope>): <subject>| 部分 | 必需 | 说明 |
|---|---|---|
| type | 是 | 变更类型 |
| scope | 否 | 影响范围 |
| subject | 是 | 简短描述(50 字符以内) |
示例:
bash
feat(auth): 添加用户注册功能
fix: 修复首页加载失败的问题
docs(readme): 更新安装说明2. Body(可选)
详细描述变更的动机和实现方式:
feat(auth): 添加用户注册功能
- 实现邮箱注册流程
- 添加邮箱验证码发送
- 集成 Supabase Auth
使用 Supabase Auth 替代自建认证系统,
降低维护成本,提升安全性。Body 编写规范:
- 使用空行与 Header 分隔
- 解释"是什么"和"为什么",而非"怎么做"
- 每行不超过 72 个字符
3. Footer(可选)
用于关联 Issue 或标注破坏性变更:
feat(api)!: 重构用户认证接口
BREAKING CHANGE: 认证接口从 /api/auth 迁移到 /api/v2/auth
旧接口将在下个版本移除
Closes #123, #456常用 Footer:
Closes #123- 关闭 IssueRefs #456- 引用相关 IssueBREAKING CHANGE:- 破坏性变更说明
破坏性变更
当提交包含破坏性变更时,有两种标记方式:
bash
# 方式1:在 type 后加 !
feat(api)!: 移除废弃的 v1 接口
# 方式2:在 footer 中说明
feat(api): 重构认证系统
BREAKING CHANGE: 需要重新配置环境变量示例集合
功能开发
bash
# 简单功能
git commit -m "feat: 添加暗黑模式切换"
# 带 scope
git commit -m "feat(ui): 添加用户头像上传组件"
# 带 body
git commit -m "feat(auth): 实现 JWT 刷新机制
- access token 有效期 15 分钟
- refresh token 有效期 7 天
- 自动刷新逻辑封装在 axios 拦截器中"Bug 修复
bash
# 简单修复
git commit -m "fix: 修复登录按钮点击无响应"
# 带关联 Issue
git commit -m "fix(cart): 修复购物车数量计算错误
修复当商品数量为 0 时,总价显示 NaN 的问题
Fixes #789"其他类型
bash
# 文档
git commit -m "docs: 添加 API 使用说明"
# 重构
git commit -m "refactor: 提取公共验证逻辑到 utils"
# 样式
git commit -m "style: 统一代码缩进为 2 空格"
# 测试
git commit -m "test: 添加用户服务单元测试"
# 构建
git commit -m "build: 升级 Next.js 到 14.0"
# CI
git commit -m "ci: 添加自动化部署 workflow"
# 杂项
git commit -m "chore: 更新依赖版本"AI 协作指南
让 AI 帮你生成规范的提交信息:
示例 Prompt:
"我修改了 src/components/UserCard.tsx,添加了用户头像显示功能,并修复了名称过长时的文字溢出问题。请帮我生成符合 Conventional Commits 规范的提交信息。"
验收清单
- [ ] 理解 Header、Body、Footer 的作用
- [ ] 能正确使用 scope 标注影响范围
- [ ] 知道如何标记破坏性变更
- [ ] 能编写清晰的 Body 说明
