大家好,我是小铁。
今天我们不聊复杂的架构,聊一个每天都在发生,但 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 是唯一的“历史档案”。一个好的提交信息应该能回答三个问题:
- 改了什么? (feat/fix/docs)
- 为什么改? (解决了什么 bug,增加了什么功能)
- 有什么影响? (是否不兼容旧版本)
二、 救世主: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 commitizen2. 只要你的项目里支持,以后提交代码时,别用 git commit,改用:
git cz3. 见证奇迹的时刻:
终端会出现一个交互界面:
? 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" 时,请停下来想一想:如果三个月后的你看到这条记录,想不想穿越回来给自己一拳?
如果在项目里推行这套规范,你会发现:
- 生成 Changelog 变得全自动了。
- 排查 Bug 变快了。
- 团队里的同事看你的眼神都充满了敬意。
赶快去试试吧!