Git Commit 规范提交

163 阅读2分钟

git commit 规范工具

  • commitizen
  • cz-conventional-changelog
  • commitlint
  • husky

1. 全局安装commitizen

npm install -g commitizen
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc

2.全局安装 cz-conventional-changelog

npm install -g  cz-conventional-changelog
# 写配置文件
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc

在安装commitizen,cz-conventional-changelog 之后就已经可以使用git cz 来代替git commit了.如下图

image.png

但是,此时你依然可以使用git commit 写一些不符合规范的commit用来提交. 所以我们要对git commit的行为进行限制,不让乱提交


3.项目目录下(git管理的目录下)安装commitlint

npm i -D @commitlint/config-conventional @commitlint/cli

# 写配置文件
echo 'module.exports = {extends: ["@commitlint/config-conventional"]};' > ./commitlint.config.js


4.项目目录安装husky:提供git hook

npm i -D husky
npx husky install
#使用适配commitlint的commit-msg hook
npx husky add .husky/commit-msg 'npx commitlint --edit $1'

在使用husky之后,需要查看commit是否正常生成了

image.png 如果不能正常生成Change-Id,则不能push成功

解决办法: 在.husky目录里的commit-msg添加 执行git自己的commit-msg来生成Change-Id

if [ -f .git/hooks/commit-msg ]; then
  . ".git/hooks/commit-msg"
fi

至此,就可以约束git commit的提交规范了,养成良好习惯.


5. git cz 字段参考

# 主要type
feat:     增加新功能
fix:      修复bug

# 特殊type
docs:     只改动了文档相关的内容
style:    不影响代码含义的改动,例如去掉空格、改变缩进、增删分号
build:    构造工具的或者外部依赖的改动,例如webpack,npm
refactor: 代码重构时使用
revert:   执行git revert打印的message

# 暂不使用type
test:     添加测试或者修改现有测试
perf:     提高性能的改动
ci:       与CI(持续集成服务)有关的改动
chore:    不修改src或者test的其余修改,例如构建过程或辅助工具的变动


scope:
scope也为必填项
用于描述改动的范围,格式为项目名/模块名,例如:node-pc/common rrd-h5/activity
而we-sdk不需指定模块名。如果一次commit修改多个模块,建议拆分成多次commit,以便更
好追踪和维护。

body:
body填写详细描述,主要描述改动之前的情况及修改动机
对于小的修改不作要求,但是重大需求、更新等必须添加body来作说明。

break changes:
break changes指明是否产生了破坏性修改,涉及break changes的改动必须指明该项
类似版本升级、接口参数减少、接口删除、迁移等。

affect issues:
affect issues指明是否影响了某个问题。例如我们使用jira时,
我们在commit message中可以填写其影响的JIRA_ID