使用Husky配置Git提交Hooks

最近看到了公司的项目安装了提交钩子,但是查了一下git的目录下面倒是没有网上提到的hooks目录,于是想看看具体是什么起了钩子的作用,后续在安装的插件中看到了husky这个插件,就是这个插件用来对提交的代码进行验证,每次提交代码会走一遍eslint的检测,如果发现问题则无法正常提交。

什么是git提交钩子

"提交钩子"通常是用于在代码提交(commit)的阶段触发自定义的脚本或操作。这主要应用于版本控制系统,例如Git。提交钩子允许开发者在代码被提交到版本库之前或之后执行一些自定义的操作,例如代码检查、测试运行、文档生成等。本篇文章主要记录一下用提交钩子进行代码检查。

常见的提交钩子有以下几种类型:

  1. pre-commit: 在执行实际的提交之前运行。可以用于执行代码风格检查、静态代码分析等,确保即将提交的代码符合一定的质量标准。
  2. prepare-commit-msg: 在提交信息被编辑之前运行。可以用于自动填充或修改提交信息。
  3. commit-msg: 在提交信息被保存之后运行。可以用于验证提交信息的格式或进行进一步的修改。
  4. post-commit: 在提交操作完成后运行。可以用于触发一些后续的操作,比如发送通知或更新其他相关的信息。

这些提交钩子都是存储在.git/hooks目录下的可执行脚本文件,它们以特定的名称存在,Git会在相应的时机自动调用它们。

要启用提交钩子,可以通过在.git/hooks目录下创建或修改相应的脚本文件来实现。这样,在相关的Git操作(如提交代码)时,提交钩子就会被执行。

使用提交钩子的主要目的是确保代码质量、规范提交信息等,从而提高团队协作和代码维护的效率。

Husky运行脚本的工具

由于提交的时候出现了钩子的错误,但是去git的目录下又没有找到hooks目录,发现有一个插件是带来pre-commit的,下图则是项目中的git钩子配置,这里只声明了一个pre-commit,也就是一个提交前的钩子。

husky 是一个用于在 Git 钩子中运行脚本的工具。Git 钩子是在特定的 Git 事件发生时触发的脚本,比如这里的precommit,也就是添加一个在提交前的钩子,我们可以在这些事件发生前或发生后执行自定义的操作。husky 就是能让git钩子的配资更加的快捷

lint-staged 的配置声明了对所有 .js和.vue 文件运行 ESLint,也就是提交前所有的js和vue的文件都会走一遍eslint

--fix是让eslint自动去修复一些比较简单的问题,比如换行逗号首位空格的问题 git add 是将修复后的文件添加到暂存区

绕过hook提交代码

绕过提交钩子可以通过使用 --no-verify 。这个选项意思是 Git 在提交的时候不运行任何钩子。不建议使用,因为提交钩子通常用于确保代码质量和一致性。但开发的过程中难免有些意想不到的事情,比如我设置了hook,但提交的时候我又不想要钩子了怎么办,我们可以临时的绕过钩子去提交代码

以下是如何使用 --no-verify 绕过提交钩子的示例:

sql 复制代码
git commit -m "Your commit message" --no-verify

如果是用sourcetree来提交代码,则可以在提交选项中选择绕过提交钩子。

文章!如果觉得有趣或有收获,请关注我的更新,给个喜欢和分享。您的支持是我写作的最大动力!

往期好文推荐

相关推荐
程序员爱钓鱼2 小时前
Go语言实战案例 — 项目实战篇:简易博客系统(支持评论)
前端·后端·go
追逐时光者8 小时前
精选 4 款基于 .NET 开源、功能强大的 Windows 系统优化工具
后端·.net
TF男孩8 小时前
ARQ:一款低成本的消息队列,实现每秒万级吞吐
后端·python·消息队列
excel9 小时前
ES6 中函数的双重调用方式:fn() 与 fn\...``
前端
可乐爱宅着9 小时前
全栈框架next.js入手指南
前端·next.js
bobz9659 小时前
进程和线程结构体的统一和差异
面试
AAA修煤气灶刘哥10 小时前
别让Redis「歪脖子」!一次搞定数据倾斜与请求倾斜的捉妖记
redis·分布式·后端
AAA修煤气灶刘哥10 小时前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql
你的人类朋友10 小时前
什么是API签名?
前端·后端·安全
昵称为空C12 小时前
SpringBoot3 http接口调用新方式RestClient + @HttpExchange像使用Feign一样调用
spring boot·后端