大家好,我是小铁。

今天我们不聊复杂的架构,聊一个每天都在发生,但 90% 的程序员都在犯错的事情:Git 提交信息 (Commit Message)

你是不是也见过(或者写过)这样的提交记录?

commit 3a1b2c
Author: XiaoMing <xm@example.com>
Message: fix bug

commit 4d5e6f
Author: XiaoMing <xm@example.com>
Message: fix bug again

commit 7g8h9i
Author: XiaoMing <xm@example.com>
Message: update

commit 0j1k2l
Author: XiaoMing <xm@example.com>
Message: 111

这时候,如果线上突然出了问题,需要回滚代码,或者你需要排查这几个 fix bug 到底修了什么,看着这一堆毫无意义的单词,你的内心大概是崩溃的。🤯

写好 Commit Message,不是为了取悦老板,而是为了放过未来的自己。

今天介绍一套业界最流行的规范 —— Conventional Commits(约定式提交),并教大家怎么用工具自动生成。

一、 为什么你的提交记录很糟糕?

大多数人写不好 Commit Message 的原因很简单:
但在团队协作中,Git log 是唯一的“历史档案”。一个好的提交信息应该能回答三个问题:

  1. 改了什么? (feat/fix/docs)
  2. 为什么改? (解决了什么 bug,增加了什么功能)
  3. 有什么影响? (是否不兼容旧版本)

二、 救世主:Conventional Commits 规范

这套规范由 Angular 团队发扬光大,格式非常简单:

<类型>(<范围>): <描述>

<正文> (可选)

<脚注> (可选)

看着晕?直接看例子:

  • 错误写法: 修改了登录报错
  • 正确写法: fix(auth): 修复用户密码包含特殊字符无法登录的问题

1. 必备的“类型”前缀

记住这几个最常用的关键词,瞬间显得你很专业:

  • feat: 新增功能 (Feature)
  • fix: 修复 Bug
  • docs: 仅修改了文档 (Documentation)
  • style: 修改代码格式,不影响逻辑 (空格、分号等)
  • refactor: 代码重构 (既不是修 Bug 也不是加功能)
  • perf: 性能优化 (Performance)
  • chore: 杂项 (构建过程或辅助工具的变动)

三、 手写太麻烦?用工具“偷懒”

如果你跟我一样懒,不想每次都背这些关键词,我们可以用工具来强制约束!

神器推荐:Commitizen

这是一个命令行工具,它会像填问卷一样引导你写出完美的 Commit。

1. 全局安装(基于 Node.js):

npm install -g commitizen

2. 只要你的项目里支持,以后提交代码时,别用 git commit,改用:

git cz

3. 见证奇迹的时刻:
终端会出现一个交互界面:

? Select the type of change that you're committing: (Use arrow keys)
❯ feat:     A new feature
  fix:      A bug fix
  docs:     Documentation only changes
  style:    Changes that do not affect the meaning of the code
  ...

你只需要上下选择类型,输入修改范围,输入简短描述... 回车!一条标准的提交记录就生成了。

四、 进阶:配合 VS Code 插件

如果你不喜欢用命令行,VS Code 也有对应的插件:Conventional Commits

安装后,点击左侧源代码管理面板的一个小圆圈图标,它也会弹窗让你做选择题。

五、 总结

技术不仅在于代码写得有多骚,更在于可维护性

当你下一次想随手打一个 git commit -m "update" 时,请停下来想一想:如果三个月后的你看到这条记录,想不想穿越回来给自己一拳?

如果在项目里推行这套规范,你会发现:

  1. 生成 Changelog 变得全自动了。
  2. 排查 Bug 变快了。
  3. 团队里的同事看你的眼神都充满了敬意。

赶快去试试吧!

最后修改:2025 年 11 月 21 日
如果觉得我的文章对你有用,请随意赞赏