一、Angular Commit 速查卡(单行记忆)
<type>(<scope>): <subject> ← Header(必)
← 空行
[body] ← 可选,72 字换行
← 空行
[footer] ← 可选,关联 issue/BREAKING
书写铁律
- 英文半角冒号+空格
: - subject ≤ 50 字,首字母小写,句尾无
. - 全部用现在时祈使句:change / add / fix,而非 changed / added / fixed
二、type & scope 枚举字典
| type(必须小写) | 场景解释 | 常见 scope 举例(按需要增删) |
|---|---|---|
| feat | 新功能 | user, auth, order, payment, cart, goods, coupon, log, config, i18n, api, admin, h5, miniapp |
| fix | 修 bug | 同上 + 具体页面如 login, register, checkout |
| docs | 仅文档 | readme, changelog, api-doc, wiki, comment |
| style | 不影响逻辑的格式 | lint, prettier, css, semicolon, quote |
| refactor | 重构 | service, component, store, util, hook, directive |
| perf | 性能优化 | bundle, img, cache, sql-index, render |
| test | 测试相关 | e2e, unit, jest, cypress, smoke |
| chore | 杂务:升级依赖、脚本、构建 | deps, build, ci, script, docker, webpack, vite |
| build | 变更构建系统 | webpack, rollup, gulp, npm, yarn, pnpm |
| ci | 持续集成配置 | github-actions, jenkins, gitlab-ci, drone |
| revert | 回滚 | 一般 scope 用 * 或留空,subject 写 revert: xxx |
| delete | 删除功能/文件 | module, component, api, view |
| modify | 功能调整(非新增) | 同上 |
特殊 scope
*—— 影响全局/多个模块global/common—— 工具、全局配置typo—— 仅错别字,可配合 docs/style
三、Footer 规范
- 关联 issue
Closes #123或Fixes #123, #124 - 破坏性变更
必须大写且后跟英文冒号,可多空行写详情。BREAKING CHANGE: 旧接口 /foo 已移除,请改用 /v2/foo。 - 回滚
revert: feat(payment): 微信支付功能集成 This reverts commit 8f1c3e2.
四、常见坑 & 提示
- 一次 commit 只做一件事,混用 feat+fix 会打乱自动生成 CHANGELOG。
- 超过 72 字自动换行,否则 GitHub 小屏展示会截断。
- 忘记空格
:或把中文冒号:打进去,husky 钩子会直接拒提。 - scope 别太细,否则枚举爆炸;建议团队先统一“模块清单”并写进 README。
- 如果项目用 squash merge,feature 分支里可以写“草稿级” message,最终 PR 里再严格按规范重写。
- 生成 CHANGELOG 的工具(conventional-changelog/semantic-release)只认 feat/fix/perf/BREAKING,其余 type 默认不计入“特性/修复”章节。
- 紧急线上热修,type 仍用 fix,scope 写 hotfix 或 prod,body 里注明“hotfix applied directly on v1.2.3 tag”。