配置Git Husky与ESLint后执行git commit触发提交报错如何解决?
问题根因
未配置Husky时git没有前置校验逻辑,只要代码符合git基础提交要求就能正常提交。配置Git Husky与ESLint后,pre-commit钩子会在提交执行前自动触发ESLint代码规则校验,只要代码存在不符合规则的error级问题,就会直接终止提交流程,属于预置的代码规范防护机制,并非配置故障。
排查与解决方法
- 优先修复代码规范问题:执行
git commit后终端输出的ESLint报错内容即为具体的问题代码位置、不符合的规则条目,按照提示修改对应代码的语法/格式问题后,重新执行git add暂存修改,再提交即可正常通过校验。 - 紧急场景临时跳过校验:若需要紧急提交代码可临时绕开校验,执行命令
git commit --no-verify -m "提交备注"即可跳过本次pre-commit钩子校验,该操作会跳过代码规范检查,不建议常规使用。 - 调整ESLint校验规则:若部分校验规则不符合团队开发习惯,可修改项目根目录下的ESLint配置文件(通常为
.eslintrc.js/.eslintrc.json/.eslintrc.yml),将不需要强制拦截的规则等级从error修改为warn(仅提示不拦截)或者直接关闭,修改后重新提交即可。 - 优化校验逻辑提升效率:如果当前配置是全量代码校验导致提交速度慢、误报多,可配合
lint-staged实现仅校验本次提交的暂存区代码,配置方式如下:- 安装依赖:
npm install lint-staged --save-dev - 修改Husky的
pre-commit钩子文件内容:
#!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" npx lint-staged- 在
package.json中新增lint-staged配置,示例如下:
{ "lint-staged": { "*.{js,jsx,ts,tsx,vue}": [ "eslint --fix", "git add" ] } } - 安装依赖:
配置完成后提交代码时,只会校验本次修改的文件,还会自动修复可自动修复的ESLint问题,大幅提升提交效率。
内容的提问来源于stack exchange,提问作者彭子枫
相关产品推荐
相关产品推荐

