ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

用commitlint规范团队的git提交信息

2020-05-22 11:07:06  阅读:429  来源: 互联网

标签:git hook 提交 husky commit config commitlint


前言
在一个团队中,每个人的git的commit信息都不一样,五花八门,没有一个机制很难保证规范化,如何才能规范化呢?可能你想到的是git的hook机制,去写shell脚本去实现。这当然可以,其实JavaScript有一个很好的工具可以实现这个模板,它就是commitlint。
接下来将会讲解如何一步步的使用commitlint。

 

安装husky
husky是一个git hook的管理工具,实现了大部分的git hook,有兴趣的可以自行google。一般情况下,commitlint会用在git的hook回调中,如果不想自己写githooks,那么最简单的就是和 husky一起使用。

npm install --save-dev husky

在package.json中配置husky. hooks

{
  "husky": {
    "hooks": {
      "pre-commit": "echo 我要提交代码啦",
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
      "pre-push": "echo 我要推送代码啦"
    }
  }  
}

通过HUSKY_GIT_PARAMS传递参数,-E|--env用于指向相关的编辑文件。

安装commitlint

npm install --save-dev @commitlint/config-conventional @commitlint/cli

// 或者
npm install --save-dev @commitlint/{cli,config-conventional}

根目录增加其配置文件commitlint.config.js

module.exports = {
  extends: ['@commitlint/config-conventional'],
};

一般情况下,默认的就够用了。
当然,如果需要自定义限制这些规则,不启用默认的规则,可以把配置写的更详细

rule配置说明::rule由name和配置数组组成,如:'name:[0, 'always', 72]',数组中第一位为level,可选0,1,2,0为disable,1为warning,2为error,第二位为应用与否,可选always|never,第三位该rule的值。具体配置例子如下:

提交注意
commitlint 的默认格式为

# 注意:冒号前面是需要一个空格的, 带 ? 表示非必填信息
type(scope?): subject
body?
footer?



正确的例子

git commit -m 'feat: 增加 xxx 功能'
git commit -m 'bug: 修复 xxx 功能'

scope 指 commit 的范围(哪些模块进行了修改)
subject 指 commit 的简短描述
body 指 commit 主体内容(长描述)
footer 指 commit footer 信息
type 指当前 commit 类型,一般有下面几种可选类型:

类型描述
build 主要目的是修改项目构建系统(例如 glup,webpack,rollup 的配置等)的提交
ci 主要目的是修改项目继续集成流程(例如 Travis,Jenkins,GitLab CI,Circle等)的提交
docs 文档更新
feat 新增功能
merge 分支合并 Merge branch ? of ?
fix bug 修复
perf 性能, 体验优化
refactor 重构代码(既没有新增功能,也没有修复 bug)
style 不影响程序逻辑的代码修改(修改空白字符,格式缩进,补全缺失的分号等,没有改变代码逻辑)
test 新增测试用例或是更新现有测试
revert 回滚某个更早之前的提交
chore 不属于以上类型的其他类型



标签:git,hook,提交,husky,commit,config,commitlint
来源: https://www.cnblogs.com/dshvv/p/12935895.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有