SuperAPI AI 工具集

conventional-commits

编程与开发

查看项目

更新于 10-15 10:54

技能介绍

Conventional Commits 是一套用于规范 Git 提交信息格式的约定,目标是通过统一提交信息结构,实现自动化生成变更日志、语义化版本控制和更清晰的提交历史。

用途

该规范用于格式化所有提交信息,适用于所有 git 提交、提交信息生成、拉取请求合并提交,以及当用户询问提交信息或 git 提交时。

格式结构

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

提交类型

必需类型:feat 表示新功能,对应语义化版本中的 MINOR;fix 表示缺陷修复,对应 PATCH。

常用附加类型:docs 表示仅文档变更;style 表示代码风格变更(格式化、缺少分号等);refactor 表示不修复缺陷也不新增功能的代码重构;perf 表示性能改进;test 表示新增或更新测试;build 表示构建系统或外部依赖变更;ci 表示 CI/CD 配置变更;chore 表示不修改 src 或测试文件的其他变更;revert 表示回滚之前的提交。

Scope

可选 scope 用于提供代码库中受影响区域的额外上下文信息,例如 feat(parser): add ability to parse arrays、fix(auth): resolve token expiration issue、docs(readme): update installation instructions。

Description

描述必须紧跟类型或 scope 后的冒号和空格;使用祈使语气(写 add feature,不写 added feature 或 adds feature);首字母不大写;结尾不加句点;保持简洁,通常 50-72 字符。

Body

可选正文用于提供额外上下文,必须在描述后空一行开始,可由多个段落组成,解释改动的“内容”和“原因”,而非“方式”。

破坏性变更

破坏性变更可用两种方式表示。方式一:在类型或 scope 中使用 !,如 feat!: send an email to the customer when a product is shipped,或 feat(api)!: send an email to the customer when a product is shipped。方式二:使用 BREAKING CHANGE footer,如 feat: allow provided config object to extend other configs 后接 BREAKING CHANGE: extends key in config file is now used for extending other config files。也可同时使用两种方式,如 chore!: drop support for Node 6 后接 BREAKING CHANGE: use JavaScript features not available in Node 6.。

示例

简单功能:feat: add user authentication。带 scope 的功能:feat(auth): add OAuth2 support。带正文的缺陷修复:fix: prevent racing of requests,正文说明引入请求 id 和最新请求引用,忽略非最新请求的响应,并移除原先用于缓解竞态问题的超时。破坏性变更:feat!: migrate to new API client,footer 说明 API 客户端接口已改变,所有方法现返回 Promise 而非使用回调。文档更新:docs: correct spelling of CHANGELOG。多段正文加 footer:fix: prevent racing of requests 后接正文及 Reviewed-by: Z、Refs: #123。

指南

每个提交都必须以类型加冒号和空格开头;使用祈使语气,可理解为补全句子“If applied, this commit will...”;描述应具体清晰;每个提交聚焦一个逻辑变更;在有用时使用 scope 对代码库内变更进行分类;始终清晰标注破坏性变更。

语义化版本对应关系

fix 对应 PATCH 版本升级(1.0.0 → 1.0.1);feat 对应 MINOR 版本升级(1.0.0 → 1.1.0);BREAKING CHANGE 对应 MAJOR 版本升级(1.0.0 → 2.0.0)。

常见错误

避免使用过去时和首字母大写,如“Added new feature”,应写成“feat: add new feature”;避免过于含糊,如“fix: bug”,应写成“fix: resolve null pointer exception in user service”;避免冗余,如“feat: add feature”,应写成“feat: add user profile page”;避免过去时和句点,如“feat: Added OAuth support.”,应写成“feat: add OAuth support”。