写一个优雅的Git Commit Message

前言

过去我在 IDEA 中使用通义灵码插件,这个插件在 git commit 时候有一个非常好用的功能,可以一键根据 git diff 生成标准的 git commit message。后来,Codex 转为我的主要 vibe coding 工具,我卸载了通义灵码。但是习惯了规范化的 commit message,一下子没有确实不太适应。于是,我决定深入学习一下这个规范。

介绍

约定式提交 是基于提交信息的轻量级约定。它要求我们按照模板规则上传 git commit message,规则如下:

<类型>[可选 范围]: <描述>

[可选 正文]

[可选 脚注]

其中 类型 是重点关注类型,其中包含:

  1. fix: 表示在代码库中修复了一个 bug(这和语义化版本中的 PATCH 相对应);
  2. feat: 表示在代码库中新增了一个功能(这和语义化版本中的 MINOR 相对应);
  3. build: 用于修改项目构建系统,例如修改依赖库、外部接口或者升级 Node 版本等;
  4. chore: 用于对非业务性代码进行修改,例如修改构建流程或者工具配置等;
  5. ci: 用于修改持续集成流程,例如修改 Travis、Jenkins 等工作流配置;
  6. docs: 用于修改文档,例如修改 README 文件、API 文档等;
  7. style: 用于修改代码的样式,例如调整缩进、空格、空行等;
  8. refactor: 用于重构代码,例如修改代码结构、变量名、函数名等但不修改功能逻辑;
  9. perf: 用于优化性能,例如提升代码的性能、减少内存占用等;
  10. test: 用于修改测试用例,例如添加、删除、修改代码的测试用例等。

请注意,当前提交如果有破坏性变更时,请使用 BREAKING CHANGE: <说明> 或者 <类型> !(在类型后面加 !)方式来声明。

什么是破坏性变更?

例如存在一个方法 getUser(id),变更之后使用 getUser({id: 123})新变更的内容不兼容以前的使用方式,那么这就是破坏性变更。

那么,上述变更就要按照这样方式来提交 commit message:

refactor(user):修改用户接口参数

BREAKING CHANGE: getUser(id) 已改为 getUser({id})

refactor(user)!: 修改用户接口参数

其他类型的建议

在实际使用过程中,上述 10 种类型不能包含所有的情况,比如代码初次提交,代码回退。在这里我补充一下自己使用的额外补充的类型:

  1. init: 表示项目仓库初始化,代码第一次提交;
  2. revert: 用于代码回退到某个版本,在正文中标注回退原因以及版本号。

上述对 约定式提交 做了简单概括介绍,如果你想了解更对的规范内容,请参考这个 链接

推荐两个相关插件

这里推荐两个插件,分别是 IDEA 中的 Git Commit Message Helper 以及 Visual Studio Code 中的

Commit Message Editor

Git Commit Message Helper

轻量化,替代通义灵码中自动生成规范化 git commit message。可以配置 LLM,支持 DeepSeek。

Commit Message Editor

更规范的在 VS Code 中提交信息。

2026-04-30