为什么要添加Git Commit规范(约束)?
git是现在市面上最流行的版本控制工具,书写良好的commit message能大大提高代码维护的效率也能有效提高代码CR的效率。但是在日常开发中由于缺少对于commit message的约束,导致填写内容随意、质量参差不齐,可读性低亦难以维护。而一个好的commit,让人一眼就知道这次 commit 对应干了什么,在项目中引入commit message规范可以有效解决这种问题。
Git Commit规范是什么?
git commit规范是在git commit将代码添加到本地仓库之前校验commit信息是否符合规定的校验,不通过则不能保存在本地仓库里。
怎么去添加Git Commit规范?
不同企业可能会根据企业特性去定制化调整commit规范,但目前行内使用最多的还是基于Angular 团队的 commit 规范。所以本次也只是对于这种规范进行简单介绍,以及使用 husky 插件来帮助我们检验是否符合规范。
<type>(<scope>): <subject>
<body>
<footer>
Header
type (必需) commit 的类别 scope (可选) 影响的范围 subject(必需) 简短的说明
type 的类型 | 描述 |
---|
feat | 新增功能f | fix | bug 的修复 | perf | 性能优化 | refactor | 重构代码(既没有新增功能,也没有修复 bug) | build | 主要目的是修改项目构建系统(例如 glup,webpack,rollup 的配置等)的提交 | ci | 主要目的是修改项目继续集成流程(例如 Travis,Jenkins,GitLab CI,Circle 等)的提交 | docs | 文档更新 | style | 不影响程序逻辑的代码修改(修改空白字符,补全缺失的分号等) | revert | 回滚某个更早之前的提交 | chore | 变更构建流程和辅助工具 | test | 新增测试用例或是更新现有测试 |
Body
对本次 commit 修改内容的具体描述, 可以分为多行。
# body: 72-character wrapped. This should answer:
# * Why was this change necessary?
# * How does it address the problem?
# * Are there any side effects?
# initial commit
Footer
一些备注, 通常是 BREAKING CHANGE(当前代码与上一个版本不兼容) 或修复的 bug(关闭 Issue) 的链接。
husky 插件是什么?
husky 是一个 Git Hook 工具。husky 其实就是一个为 git 客户端增加 hook 的工具。将其安装到所在仓库的过程中它会自动在.git/ 目录下增加相应的钩子实现在 pre-commit 阶段就执行一系列流程保证每一个 commit 的正确性。部分 cd 在 commit stage 执行的命令可以挪动到本地执行,比如 lint 检查、比如单元测试。当然,pre-commit 阶段执行的命令当然要保证其速度不要太慢,每次 commit 都等很久也不是什么好的体验。
1、安装husky
yarn add -D husky @commitlint/config-conventional @commitlint/cli
2、配置 husky 插件(在 package.json 中新增一个 husky 相关配置)
"husky": {
"hooks": {
"pre-commit": "npm run lint",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
3、Husky 配置 在项目的根目录下新建一个 commitlint.config.js 文件
module.exports = {
extends: ['@commitlint/config-conventional'],
};
配置完毕后,如果不按照规范提交是无法提交的。husky 工具会直接从 Git 命令层面打断你的提交。
参考文章: git commit 规范 GitHook 工具 —— husky 介绍及使用
|