commit message 提交规范
在一个开发团队中,每个人的git的commit信息都不一样,没有统一的标准很难保证规范化,如何才能规范化呢?
Angular 规范,包括三个部分:header,body 和 footer,格式如下:
其中header是必须有的,body,footer可选,header由type:subject
形式组成
go
type: subject
// 空一行
body
// 空一行
footer
提交规范模版
下面只介绍header 部
type 用于说明 commit 的类别,如下:
arduino
'feat',//新特性、新功能
'fix',//修改bug
'docs',//文档修改
'style',//代码格式修改, 注意不是 css 修改
'refactor',//代码重构
'perf',//优化相关,比如提升性能、体验
'test',//测试用例修改
'chore',//其他修改, 比如改变构建流程、或者增加依赖库、工具等
'revert',//回滚到上一个版本
'build',//编译相关的修改,例如发布版本、对项目构建或者依赖的改动
注意:
- type后面跟着的是英文冒号,还必须加一个空格!
- 当我们 commit 提交信息时,必须是 git commit -m 'fix: xxx' 符合类型的才可以,需要注意的是类型的后面需要用英文的 :,并且冒号后面是需要空一格的,这个是不能省略的
具体配置
提交规范检测
命令行提交
用命令行方式提交信息,采用 husky + commitlint进行提交前检测。
配置commitlint
对于commit信息,要有统一规范,要让每个人都按照统一的规范来执行,我们可以利用commitlint来实现。
安装包
add @commitlint/config-conventional @commitlint/cli -D
添加配置文件,新建commitlint.config.cjs
文件,然后添加下面的代码:
java
module.exports = {
extends: ['@commitlint/config-conventional'],
// 校验规则
rules: {
'type-enum': [
2,
'always',
[
'feat',
'fix',
'docs',
'style',
'refactor',
'perf',
'test',
'chore',
'revert',
'build',
],
],
'type-case': [0],
'type-empty': [0],
'scope-empty': [0],
'scope-case': [0],
'subject-full-stop': [0, 'never'],
'subject-case': [0, 'never'],
'header-max-length': [0, 'always', 72],
},
}
在package.json
中配置scripts命令
在scrips中添加下面的代码
json
{ "scripts": { "commitlint": "commitlint --config commitlint.config.cjs -e -V" }, }
按照上面配置完成后,现在当我们填写commit
信息的时候,前面就需要带着下面的subject
arduino
'feat',//新特性、新功能
'fix',//修改bug
'docs',//文档修改
'style',//代码格式修改, 注意不是 css 修改
'refactor',//代码重构
'perf',//优化相关,比如提升性能、体验
'test',//测试用例修改
'chore',//其他修改, 比如改变构建流程、或者增加依赖库、工具等
'revert',//回滚到上一个版本
'build',//编译相关的修改,例如发布版本、对项目构建或者依赖的改动
配置husky
sql
npx husky add .husky/commit-msg
在生成的commit-msg文件中添加下面的命令
bash
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
pnpm commitlint
测试:
bash
# 提交到版本库 格式错误 提交失败
git commit -am '11'
# 提交到版本库 格式正确 提交成功
git commit -am 'fix: 修复了xxx的bug'
当我们 commit 提交信息时,必须是 git commit -m 'fix: xxx' 符合类型的才可以,需要注意的是类型的后面需要用英文的 :,并且冒号后面是需要空一格的,这个是不能省略的