在写新项目的第一天,创建完工程后突然想到:“我该怎么写 commit 信息?”
于是询问 ChatGPT,遂学此规范。
这篇文章记录我对 Conventional Commits(约定式提交规范)的理解与使用。


一、Conventional Commits 是什么?

Conventional Commits(约定式提交规范) 脱胎于 Angular 提交信息准则,是一种更通用、更简洁、更灵活的提交信息格式。
它的目标是让提交记录具备结构化语义,便于:

  • 自动生成 CHANGELOG;
  • 自动管理版本号(符合语义化版本 SemVer);
  • 提高代码审查和协作效率。

二、基本格式

<类型>[可选的作用域]: <描述>
# 空一行
[可选的正文]
# 空一行
[可选的脚注]

示例:

feat(user): add login and register API

add basic authentication support with JWT.
include user registration and login endpoints.

三、type(类型)

类型 说明
feat 新功能(feature)
fix 修复 bug
docs 文档相关变更
style 不影响逻辑的代码格式修改(空格、分号等)
refactor 重构(既不是修复 bug 也不是新增功能)
perf 性能优化
test 新增或修改测试
chore 构建过程或辅助工具变动(比如修改依赖、配置)
revert 回滚到上一个版本
merge 代码合并(通常由 Git 自动生成)
sync 同步主线或分支的改动
to 特殊用法,表示阶段性修复(中间提交,最终使用 fix 完成)

💡 建议个人项目以 featfixrefactorchoredocs 为主,保持简洁统一。


四、scope(作用域)

scope 用于说明 commit 影响的范围,例如:

  • feat(user): add login API
  • fix(order): correct total price calculation
  • refactor(core): optimize Redis cache logic

具体取决于项目结构。
在多模块项目中(例如 DDD 架构),可使用领域名作为 scope:

feat(order-domain): add order aggregate root

五、subject(简短描述)

  • 简短扼要地说明变更目的;
  • 不超过 50 个字符;
  • 使用祈使语气(即描述动作而非结果);
  • 不加句号或多余标点。

✅ 推荐:

fix: handle null pointer in payment service

🚫 不推荐:

fixed the null pointer bug.

六、正文与脚注(可选)

正文通常解释为什么要这样改、影响范围或实现思路。
脚注可以写上特别标识,例如 BREAKING CHANGEISSUE 链接

示例:

feat(auth): add OAuth2 login support

implement OAuth2 authorization code flow for login.
this will replace old JWT-based login.

BREAKING CHANGE: old `/login` endpoint removed.

七、常用模板

# 新功能
feat(<模块>): <简短描述>

# 修复 bug
fix(<模块>): <简短描述>

# 代码重构
refactor(<模块>): <简短描述>

# 文档或注释修改
docs: <简短描述>

# 杂项配置修改
chore: <简短描述>

例如:

chore(init): initialize project structure

八、实际使用建议

  1. 保持一致性:团队内部要统一格式,避免混乱。
  2. 粒度适中:一次 commit 做一件清晰的事。
  3. 配合工具:可以使用 Commitizencz-conventional-changelog 或 IDE 插件来规范输入。
  4. 自动化发布:搭配 semantic-release 自动生成版本与 CHANGELOG。

九、总结

  • 约定式提交让 Git 历史“可读、可分析、可自动化”;
  • 即使是个人项目,也值得遵守;
  • 养成好习惯,从 init 提交开始。

初始化提交建议:

chore(init): initialize project structure

参考资料

  1. 阿里知乎问答 - 《如何规范你的 Git Commit?》
  2. Conventional Commits 官方规范 v1.0.0