⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议
Skip to content

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 个字符

用于关联 Issue 或标注破坏性变更:

feat(api)!: 重构用户认证接口

BREAKING CHANGE: 认证接口从 /api/auth 迁移到 /api/v2/auth
旧接口将在下个版本移除

Closes #123, #456

常用 Footer

  • Closes #123 - 关闭 Issue
  • Refs #456 - 引用相关 Issue
  • BREAKING 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 说明