Git 提交规范(二、使用husky控制git hook)
Git 提交规范(二、使用husky控制git hook)
在多人协作的开发项目中,保持一致的提交规范至关重要。这不仅能让项目历史清晰易读,还能避免因为不规范提交信息带来的混乱。
继上篇文章介绍了如何通过 commitizen 设置快捷的 commit 规范后,本篇将进一步深入,使用 Husky 和 Commitlint 强制 Git 提交信息的规范化,确保团队成员在提交代码时遵循统一的规则。
通过 husky 控制 Git hooks,我们可以拦截不符合规范的提交操作,使得提交信息的格式保持一致性和规范性,提升团队协作效率和代码管理质量。
所需插件
本次教程需要使用以下两个插件:
- commitlint:用于检查提交信息是否符合预定的规范。
- husky:拦截 Git hooks 的工具,强制执行提交规范。
1. 安装必要的依赖
首先,我们需要安装 commitlint 和 commitlint 的配置文件。打开终端并运行以下命令:
npm install --save-dev @commitlint/config-conventional @commitlint/cli
安装完成后,项目的 package.json 文件会更新,并且会有相关依赖的记录:

2. 创建 commitlint.config.js 文件
为了配置 commitlint 的校验规则,我们需要在项目根目录下创建 commitlint.config.js 文件。该文件用于定义提交信息的规范。
创建步骤:
- 在项目根目录下,新建一个
commitlint.config.js文件。 - 在文件中添加以下代码:
module.exports = {
// 继承的规则,采用官方推荐的规范
extends: ['@commitlint/config-conventional'],
// 自定义规则
rules: {
// 提交类型必须符合下列类型之一
'type-enum': [
2,
'always', [
'feat', // 新功能
'fix', // 修复 bug
'docs', // 文档变更
'style', // 代码格式修改,不影响逻辑
'refactor', // 代码重构,无功能或 bug 修复
'perf', // 性能优化
'test', // 添加测试
'chore', // 构建工具或其他依赖变动
'revert', // 回滚操作
'build', // 构建打包相关
],
],
// 允许提交的 message 忽略大小写
'subject-case': [0],
},
}

规则说明:
- type-enum:规定了提交信息中的类型(如
feat、fix等)必须符合指定的类型列表。你可以根据实际项目的需求修改此列表。 - subject-case:禁用对提交主题的大小写检查,提升灵活性。
注意:这里的提交类型规则最好与
commitizen中的规范保持一致,以避免冲突。
3. 安装 Husky
Husky 是一个用于拦截和控制 Git hooks 的工具,它可以在 commit、push 等操作时,执行特定的检查或命令。
安装命令:
npm install husky --save-dev
安装完成后,项目的 package.json 会更新,显示 husky 作为开发依赖:

4. 启动 Git hooks
安装 husky 后,需要初始化 Git hooks,以便能够在 commit 时调用 commitlint 来检查提交信息。
启动命令:
npx husky install
执行完该命令后,项目目录下将自动生成一个 .husky 文件夹,用于存放 Git hooks 脚本:

5. 配置 prepare 指令
为了确保 husky 能在每次安装依赖时自动配置 hooks,我们需要在 package.json 中添加 prepare 脚本。
设置命令:
npm set-script prepare "husky install"
手动运行 prepare 指令:
npm run prepare
执行完这一步,prepare 脚本将在每次运行 npm install 时自动执行,确保 husky 正常启用。

6. 将 commitlint 添加到 Husky hook
接下来,我们将 commitlint 添加到 husky 的 commit-msg hook 中,这样每次提交时,commitlint 都会检查提交信息的格式。
添加命令:
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'
执行后,.husky/commit-msg 文件将被自动创建,内容如下:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install commitlint --edit "$1"

7. 测试提交信息规范
现在我们来验证一下提交规范是否生效。首先执行 git add . 将文件添加到暂存区,然后尝试提交一个不符合规范的提交信息。
测试步骤:
- 执行
git add .。 - 尝试提交不符合规范的信息:
git commit -m "随便提交一个东西看看?"
此时,提交将被拦截,commitlint 会提示提交信息不符合规定的格式:

只有符合提交规范的信息才会通过检查并成功提交。
总结
通过 commitlint 和 husky 的组合,我们可以在团队开发中有效控制提交信息的规范性,避免出现随意、不清晰的提交备注,从而保持 Git 历史的可读性和一致性。本文详细介绍了如何安装和配置这两个工具,并通过具体步骤说明如何强制规范提交信息。
核心步骤回顾:
- 安装
commitlint和husky依赖。 - 在项目根目录创建
commitlint.config.js文件,配置提交规范。 - 使用
husky初始化 Git hooks。 - 将
commitlint集成到 Git 的commit-msghook 中。 - 进行测试,确保不规范的提交信息被拦截。
通过这些步骤,你可以为团队中的每位开发者设定统一的提交规范,提升项目的可维护性和开发效率。
更多推荐
所有评论(0)