用途
该技能用于按照 Conventional Commits 1.0.0 规范生成 Git 提交信息。它面向需要统一提交信息格式、便于自动生成变更日志或进行语义化版本管理的开发场景。
主要能力
- 分析变更:运行 git status 和 git diff HEAD 查看当前改动。
- 暂存文件:仅暂存用户指定的文件,或使用 git add -A 暂存全部改动。
- 确定类型与作用域:根据变更内容判断提交类型和可选作用域。
- 生成提交信息:结合用户提示生成符合规范的提交信息。
- 执行提交:使用 HEREDOC 格式提交,以保留换行与格式。
- 输出结果:输出 <hash> <subject>。
提交格式
<type>[optional scope][!]: <description>
[optional body]
[optional footer(s)]
类型选择
- 新功能:feat,对应 SemVer MINOR
- Bug 修复:fix,对应 SemVer PATCH
- 性能改进:perf,对应 SemVer PATCH
- 代码重构(无行为变化):refactor
- 代码风格/格式(无逻辑变化):style
- 添加/更新测试:test
- 仅文档:docs
- 构建系统/依赖:build
- CI/CD 配置:ci
- 回滚之前的提交:revert
- 其他维护任务:chore
注意:只有 feat 和 fix 具有 SemVer 影响。破坏性变更(任意类型加感叹号或使用 BREAKING CHANGE 页脚)会触发 MAJOR。
主题行
- 最大长度:72 个字符(推荐 50 个字符以提升可读性)
- 格式:type(scope): description 或 type: description
- 语气:祈使句现在时(用 "add",不用 "added" 或 "adds")
- 大小写:首字母小写
- 标点:结尾不加句号
作用域
作用域用于说明受影响的代码库部分,使用描述模块、组件或区域的名词。常见模式:
- 组件/模块:feat(auth):、fix(parser):、refactor(api):
- 文件/区域:docs(readme):、test(unit):、build(webpack):
- 功能:feat(dark-mode):、fix(checkout):
正文
- 与主题行之间空一行
- 解释 what 和 why,而非 how
- 可包含多个段落(用空行分隔)
- 每行 72 个字符换行
页脚
页脚遵循 git trailer 格式,使用 :<space> 或 <space># 分隔。常见页脚:
- BREAKING CHANGE: <description> - 破坏性 API 变更
- Refs: #123 或 Refs: JIRA-456 - 引用 issue
- Closes: #123 或 Fixes: #123 - 关闭 issue
- Co-authored-by: Name <email> - 标注共同作者
- Reviewed-by: Name <email> - 标注审阅者
- Acked-by: Name - 确认
注意:页脚标记使用 - 而非空格(例如 Reviewed-by 而非 Reviewed by)。例外:BREAKING CHANGE 允许空格。
破坏性变更
两种标记方式(可同时使用以强调):
-
感叹号:在主题行的冒号前加感叹号 feat(api)!: remove deprecated endpoints
-
页脚:在页脚添加 BREAKING CHANGE: 或 BREAKING-CHANGE: feat(api): redesign authentication flow
BREAKING CHANGE: OAuth tokens now expire after 1 hour instead of 24 hours.
使用方式
工作流程:
- 运行 git status 和 git diff HEAD 分析变更
- 暂存文件:仅用户指定的文件,或 git add -A 暂存全部
- 根据变更确定类型和作用域
- 结合用户提示生成提交信息
- 使用 HEREDOC 格式提交:
git commit -m "$(cat <<'EOF' <type>(<scope>): <description>
<body>
Output: <hash> <subject>
作用边界
应做:分析 git 变更、生成提交信息、暂存文件、提交。
不应做:修改代码、推送(除非被要求)、创建分支、未经请求执行 amend。
示例
简单功能: feat: add email notifications for new messages
带作用域的 Bug 修复: fix(cart): prevent ordering with empty shopping cart
文档更新: docs(api): add authentication examples to README
带正文和页脚的破坏性变更: feat(api)!: redesign user authentication endpoints
Migrate from session-based auth to JWT tokens for better scalability. The new system supports refresh tokens and configurable expiration.
BREAKING CHANGE: /api/login now returns JWT instead of session cookie. Clients must include Authorization header with Bearer token. Refs: JIRA-1337
回滚提交: revert: let us never again speak of the noodle incident
Refs: 676104e, a215868
多作用域变更(使用最重要的作用域): feat(auth): add OAuth2 support with Google provider
Adds Google OAuth2 login flow with automatic account linking.
Co-authored-by: Jane Doe jane@example.com Closes: #42
反模式
应避免的常见错误:
- 写 "Update code",应改为具体描述,如 fix(auth): validate token expiration
- 写 "Fixed bug",应使用现在时,如 fix: prevent null pointer in parser
- 写 "WIP",不应提交 WIP,应提交完整单元
- 写 "Add feature.",结尾不加句号,如 feat: add dark mode toggle
- 写 "Added tests",应使用祈使语气,如 test: add unit tests for parser
- 写 "FEAT: Add...",类型应小写,如 feat: add...
- 写 "misc changes",应具有描述性,如 chore: update dependencies
适用场景
适用于需要遵循 Conventional Commits 规范进行 Git 提交的团队或个人项目,尤其适合需要自动生成变更日志、进行语义化版本管理或统一提交风格的开发流程。
限制
该技能不修改代码、不推送(除非被要求)、不创建分支、未经请求不执行 amend。关于收费、价格、平台支持等具体信息,资料中暂未提供。