git规范代码提交格式:commitlint+husky安装

2024-05-26 05:38

本文主要是介绍git规范代码提交格式:commitlint+husky安装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境:centos

版本:

node -v : v14.17.6

npm -v : 6.14.15

npx -v : 6.14.15

git --version : git version 2.16.1

其中版本要求至少:nodejs >= 12   git >= 2.13.2

gitlab安装:https://blog.csdn.net/hnmpf/article/details/80518460

安装完成gitlab后,新建一个目录作为代码仓库目录;

安装必备软件:

nodejs:

mkdir node.js // 新建目录cd node.js // 进入目录里面wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz  // 下载tar xf  node-v10.9.0-linux-x64.tar.xz       // 解压cd node-v10.9.0-linux-x64/   // 进入解压目录node -v //查看版本号解压文件的 bin 目录底下包含了 node、npm 等命令,我们可以使用 ln 命令来设置软连接:
ln -s /usr/software/nodejs/bin/npm   /usr/local/bin/ 
ln -s /usr/software/nodejs/bin/node   /usr/local/bin/设置npm镜像为国内的
npm config set registry http://registry.npm.taobao.org

因为我安装的版本较低,因此需要升级版本:

npm cache clean -f // 清楚node缓存npm i -g n  //  安装node的版本管理工具n   或者 npm install -g n升级node:
n stable   // 升级到最新稳定版 (建议)
n latest   // 升级到最新版本
n 版本号   // 升级到指定版本如果当前版本没有变化的话,可以重新打开服务器再看一下卸载旧版本的nodejs:
yum remove nodejs npm -y // 卸载npm进入 /usr/local/lib 删除所有 node 和 node_modules文件夹
进入 /usr/local/include 删除所有 node 和 node_modules 文件夹
检查 ~ 文件夹里面的"local" “lib” “include” 文件夹,然后删除里面的所有 “node” 和 “node_modules” 文件夹可以使用以下命令查找 $ find ~/ -name node $ find ~/ -name node_modules删除: /usr/local/bin/npm
删除: /usr/local/share/man/man1/node.1
删除: /usr/local/lib/dtrace/node.d
删除: rm -rf /home/[homedir]/.npm
删除: rm -rf /home/root/.npm

如果npm安装成功,但是执行的时候找不到命令?

解决:需要设置环境变量就可以了:

# 用一个通用的命令配置环境变量

 echo -e "export PATH=$(npm prefix -g)/bin:$PATH" >> ~/.bashrc && source ~/.bashrc

# 上面的命令中使用 npm prefix -g 获取node安装目录

如果报找不到npx命令:

npm i -g npx

或者

npm install -g npx

安装 commitlint

第一步:初始化

npm init  // 初始化一些信息,执行完成后悔创建一个package.json的文件
//建议在执行的过程中,能填的信息都填上;最后生成的文件如下:
{"name": "test001","version": "1.0.1","description": "test0001 description","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"repository": {"type": "git","url": "http://xxxx:8001/atong/test001.git"},"author": "test001","license": "ISC","devDependencies": {"@commitlint/cli": "^13.1.0","@commitlint/config-angular": "^13.1.0","@commitlint/config-conventional": "^13.1.0","husky": "^4.2.3"},"dependencies": {},"keywords": ["test001"]
}
执行完可以在项目根目录看到package-lock.json,package.json文件

第二步:安装插件 commitlint

npm install --save-dev @commitlint/{cli,config-conventional}echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js

验证是否安装成功:

第一种验证方式:$ echo "foo: bar"|npx commitlint
⧗ input: foo: bar
✖ type must be one of [jira_id, feature, update, fix, refactor, optimize, style, docs, chore] [type-enum]✖ found 1 problems, 0 warnings
ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint第二种验证方式:npx commitlint --from HEAD~1 --to HEAD --verbose

第三步:安装husky

建议不要使用默认latest版本安装 可能hooks会失效  这是官方的一个ISSUES如已经安装并且不生效 请先删除.git/hooks文件夹
然后删除默认版本npm uninstall husky
再次安装即可npm install husky@4.2.3 --save-dev安装:
npm install husky@4.2.3 --save-devnpx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1'

在package.json中增加husky配置:

"husky": {"hooks": {"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"}}

第四步:添加配置规范到commitlint.config.js

这个文件代表以后commit -m 后面的提交应遵循的规范

/*** jira_id:关联jira的issue ID 用于关联动作 必填* feat:新功能* update:更新某功能* fixbug:修补某功能的bug* refactor:重构某个功能* optimize: 优化构建工具或运行时性能* style:仅样式改动* docs:仅文档新增/改动* chore:构建过程或辅助工具的变动*/module.exports = {extends: ['@commitlint/config-conventional'],rules: {'type-enum': [2,           // 表示必须输入的'always', ['jira_id', 'feat', 'update', 'fix', 'refactor', 'optimize', 'style', 'docs', 'chore']],'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],}
};

最后的文件有:

-rw-r--r--   1 root root   490 Sep  3 17:49 commitlint.config.js
drwxr-xr-x 139 root root  4096 Sep  3 17:47 node_modules
-rw-r--r--   1 root root   656 Sep  3 17:47 package.json
-rw-r--r--   1 root root 58766 Sep  3 17:47 package-lock.json其实还有两个隐藏文件:(.git文件)(.husky文件)
-rw-r--r--   1 root root   490 Sep  3 17:49 commitlint.config.js
drwxr-xr-x   8 root root  4096 Sep  3 20:25 .git
drwxr-xr-x   3 root root  4096 Sep  3 16:40 .husky
drwxr-xr-x 139 root root  4096 Sep  3 17:47 node_modules
-rw-r--r--   1 root root   656 Sep  3 17:47 package.json
-rw-r--r--   1 root root 58766 Sep  3 17:47 package-lock.json.git目录中有 hooks文件夹

提交规范:

格式

Commit Message 格式
每次提交,Commit message 都包括三个部分:HeaderBodyFooter。其中,Header 是必需的,BodyFooter 可以省略。
​
<type>(<scope>): <subject>
<空行>
<body>
<空行>
<footer>

不管是哪一个部分,任何一行都不得超过72个字符(或100个字符)。

Header部分只有一行,包括三个字段:type(必需)、scope(可选)和 subject(必需)。

demo必须使用下面的方式 ** 每个类型必须以冒号":" 加空格" "格式,jira_id必须写在第一位

  • jira_id: DEV-111 修复了BUG (备注 必填项 否则代码将无法推送到gitlab仓库)

  • feat : 新增了功能

  • fix: 修复了BUG 

  • docs: 仅仅修改了文档

  • style: 修改了空格、格式缩进、逗号等,不改变代码逻辑

  • perf: 优化相关,比如提升性能、体验

  • test: 测试用例,比如单元测试、集成测试等

  • chore: 改变构建流程、或者增加依赖库、工具等

  • revert: 回滚到上一个版本

提交错误提示

未按照规范提交,将无法提交代码,并提示如下

# git commit -m "test 02"⧗   input: test 02
✖   subject may not be empty [subject-empty]✖   found 1 problems, 0 warnings
ⓘ   Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlinthusky - commit-msg hook exited with code 1 (error)

正确的提交:

# git commit -m "jira_id: test 02"


[master a7a2488] jira_id: test 02
 1 file changed, 1 insertion(+), 1 deletion(-)
 

参考资料:

https://blog.csdn.net/wei371522/article/details/84070803

https://commitlint.js.org/#/guides-local-setup?id=install-commitlint  推荐根据官网的安装脚本执行

这篇关于git规范代码提交格式:commitlint+husky安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003637

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是