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

pre-commit和husky都是较好的工具,但是husky使用人说更多 更早,这里只说husky。

安装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'],
};

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

module.exports = {
extends: [
"@commitlint/config-conventional"
],
rules: {
'type-enum': [2, 'always', [
'upd', 'feat', 'fix', 'refactor', 'docs', 'chore', 'style', 'revert'
]],
'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]
}
};

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 不属于以上类型的其他类型

用commitlint规范团队的git提交信息的更多相关文章

  1. 【vue3-element-admin】Husky + Lint-staged + Commitlint + Commitizen + cz-git 配置 Git 提交规范

    前言 本文介绍 vue3-element-admin 如何通过 Husky + Lint-staged + Commitlint + Commitizen + cz-git 来配置 Git 提交代码规 ...

  2. 写得好 git 提交信息

    编写好 git 提交信息 提交信息 我们作出答复,更改将提交相关信息,这些信息通常被认为是重要的信息会小心留下应该离开,你为什么需要这个提交实例,提交解决任何问题. 我们需要良好的信息组织,虽然后来, ...

  3. 怎么创建一个良好的Git提交信息

    译   原文:https://dev.to/chrissiemhrk/git-commit-message-5e21 提交信息是对提交之前添加和更改的文件所做的更改的简短描述. 良好的提交信息不仅对你 ...

  4. git push撤销、git commit 撤销、git add撤销、修改git提交信息

    原文地址:http://leisure.wang/?p=472 虽然自觉是一个Git工具的老手了,但是平时犯了一点错误,就发现有点捉襟见肘了.就好像今天我把一些代码玩坏了,想撤回到前几个版本去(此时已 ...

  5. commit lint规范化团队git提交信息

    一.快速提交符号angular编码规范的提交信息 1.命令行中安装commitizen: npm install -g commitizen commitizen init cz-convention ...

  6. 在 Git 提交信息中使用 Emoji

    Gitmoji 旨在解释如何在 Git 提交消息时使用表情符号.在提交信息时使用表情符号,可以更容易地识别提交的目的或意图. Emoji 列表 :优化项目结构 / 代码格式 :art: ️ :性能提升 ...

  7. 使用gradle构建Android时 版本号versionName中嵌入git提交信息

    为什么要这么做   在应用开发的版本迭代过程中,通过版本号并不能快速定位到所对应的代码,导致在后面分析问题追溯对应版本的代码时比较麻烦.   如果代码是通过git来管理的,git的commit id等 ...

  8. [Golang] 编译程序时打上git提交信息标记

    1.加入代码 //version.go package version import ( "flag" "fmt" "os" ) var ( ...

  9. 老鸟都应该注意的git 提交规范

    不知道大家有没有看过自己项目的git 提交信息-----我看过好多次 ,不忍直视  然后提醒一起的小伙伴 :大家规范点 信息要详细, 过段时间再看下 ,还是一样. 相信很多猿都有这样的感受,对于垃圾的 ...

  10. husky+ prettier + commitlint 提交前代码检查和提交信息规范

    一.安装相关的包 npm install -D husky npm install -D lint-staged // lint钩子 npm install -D prettiernpm instal ...

随机推荐

  1. SMU Autumn 2024 Trial 2

    A. Stand-up Comedian 只要a不为0,那么由于b和c是相互制约的,比如2 5 10 6这个样例,讲完两个笑话以后两个人的容量为2 2,可以选择一个人+1,一个人-1,那么就可进行mi ...

  2. 如何在 MySQL 中避免单点故障?

    如何在 MySQL 中避免单点故障? 在 MySQL 中避免单点故障(SPOF, Single Point of Failure)是确保数据库高可用性和系统稳定性的关键.通过采取以下几种策略,可以最大 ...

  3. 游戏开发之Cocos3着色器/shader快速入门

    本文为学习笔记,不排除有谬误,但确保都是亲测.另外,傻狗百度收不收录的无所谓,我来博客园就是为了记记笔记. 对于新人,首先明确一点:shader需要通过材质的方式作用于模型上 所以有个很关键的步骤,c ...

  4. centos 7.8下载地址

    随着7.9版本的正式版本的发布,7.8.2003版本逐渐被各大镜像站替换,取消. 7.8.2003版本的可以自行在华中科技大学的镜像站下载,这个地址也可能随时会失效,如果失效了同学们可以自行百度搜寻. ...

  5. AutoFac学习Demo1——官网Demo

    AutoFac实现Demo1 1.创建一个工作台(.NET Core)程序AutofacDemo1,nuget引入AutoFac,搜索第一个就是 2.创建输出接口IOutput及实现ConsoleOu ...

  6. 我也来说说经典面试题目-“OOM异常会导致JVM退出吗?”

    经典面试题目"OOM异常会导致JVM退出吗? 我的回答是"这要分情况看,对于守护线程来说,OOM并不会导致JVM退出:对于非守护线程来说,如果某个线程捕获了OOM异常并正确进行了处 ...

  7. 工具 | webshell-decryptor

    0x00 简介 webshell-decryptor是一款通过获取到的webshell流量.url.key来还原攻击者使用webshell所做操作的工具. 下载地址: webshell-decrypt ...

  8. Python基础 - 文件处理(下)

    主要是介绍两个文件处理的内置模块 os, pathlib. 上篇对文件的读写基本搞定了. 当然, 因为我做数据的嘛, 我的日常并不是简单的读写下文件, 而是重在读取数据后, 各种复杂的操作. 用到的更 ...

  9. Web前端入门第 55 问:JavaScript 严格模式与非严格模式区别

    JavaScript 默认是非严格模式的,可以通过 "use strict"; 启用严格模式.此声明语句可以放在 JS 文件顶部,也可以放在函数内部. 启用严格模式 1.外部脚本在 ...

  10. 第2讲、Transformer架构图详解

    1. Transformer架构运行机制 Transformer架构是一种强大的神经网络结构,主要用于自然语言处理任务.它摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),完全基于注意力机制 ...