
约定式提交指南
Git 每次提交代码, 都要写 Commit message(提交说明)
意义及现状
约定式提交(conventional commits)是一种特定的提交形式, 它为软件开发人员提供了一个通用的系统, 来管理和描述他们每次的提交. 使得开发人员更容易追踪每次的更新. 这种类型的提交通常遵循严格且一致的格式,方便快速浏览查找,回溯之前的工作内容。
commit message 的结构如下:
commit 内的 type
元素是必须的, 用于表示当前提交的意图, 并且应该是以下类型之一:
- feat - 新功能 feature
- fix - 修复 bug
- docs - 文档注释
- style - 代码格式(不影响代码运行的变动)
- refactor - 重构、优化(既不增加新功能,也不是修复bug)
- perf - 性能优化
- test - 增加测试
- chore - 构建过程或辅助工具的变动
- revert - 回退
- build - 打包
commit 内的 scope
是选填项, 表示 commit 的作用范围,如api, ui, database,也可以是目录名称.
commit 内的 description
是必填项, 用于对 commit 进行简短的描述.
例子:
为什么要使用约定式提交?
- 无论是在发布版本时、还是在每次提交 commit 时, 手动编写 CHANGELOG 总是令人心烦的. 自动化该流程能提高幸福指数.
- 在不强调 commit 规范的前提下, 去强调 CHANGELOG 的准确性, 我认为是靠不住的. 在记录时、迭代编辑时、合并分支时都有可能丢失文档内的信息. 而基于 commit 生成 CHANGELOG 则大大降低了这个可能性, 毕竟 commit 可不能随随便便就搞丢.
- 自动生成 CHANGELOG 应该作为 CI/CD 的一部分.
为你的项目设置约定式提交
我将使用 commitlint(面向约定式提交的自动化工具)来实现自动使用约定式提交 commit.
1️⃣. 安装 commitlint 以及依赖:
2️⃣. 添加 commitlint 配置文件到你的项目: 使用下面令创建具有基本配置的配置文件:
配置文件内应包含下面内容:
3️⃣. commitlint 需要使用 commit-msg hook
, 官方使用的是 husky.
使用下面命令激活 hooks :
你会看到这样的提示:
并且在你项目的根目录你会看到你一新创建的 .husky
的文件夹.
tip: 我强烈建议在 package.json 中添加一个 postinstall
脚本, 用来在安装完依赖后自动安装 husky hooks.
4️⃣. 添加一个 commit-msg
hook 到 lint commits:
完成后你可以在 .husky
文件夹看到一个名为commit-msg
的文件.
现在每当你提交时, commitlint 都会检查你的 commit message 并确保它遵循 conventional commit 提交格式.
创建一个提交进行测试:
测试提交会出现以下报错:
到此, commitlint 已检测到提交消息没有遵循 conventional commit 提交格式,并提供了有用的错误消息.
使用 conventional commit 再次提交:
会显示提交成功:
结论
一套组合拳下来, 正经的 commit 规范 + 自动生成 CHANGELOG 的机制就形成了.
此时再针对各个配置按需进行调整, 就能 run 起来了, Happy committing🍻.