目录
- 目录
- [1. 检查 Git 钩子脚本(核心步骤)](#1. 检查 Git 钩子脚本(核心步骤))
- [2. 临时绕过钩子(快速提交)](#2. 临时绕过钩子(快速提交))
- [3. 修复钩子依赖环境](#3. 修复钩子依赖环境)
- [4. 重新初始化 Husky(如适用)](#4. 重新初始化 Husky(如适用))
- [5. 验证用户配置](#5. 验证用户配置)
Tips: 如果是 clone 下来的新项目直接进行 步骤 4
。
1. 检查 Git 钩子脚本(核心步骤)
- 问题根源:
.git/hooks/pre-commit
或其他钩子脚本的开头可能包含无效的 Shebang 行(如#!/bin/sh -/
)或语法错误。 - 解决方法:
-
进入项目根目录的
.git/hooks
文件夹:bashcd .git/hooks
-
检查
pre-commit
文件(或其他钩子)的开头行:bashhead -n 1 pre-commit
-
修正 Shebang 行:确保首行为
#!/bin/sh
或#!/usr/bin/env sh
,删除多余的符号(如-/
)。 -
检查脚本内容:若脚本包含类似
- /path/to/node
的无效参数,需修正为合法命令(如node script.js
)。
-
2. 临时绕过钩子(快速提交)
若需紧急提交,可跳过钩子检查:
bash
git commit --no-verify -m "提交信息"
注意:此操作会忽略代码规范检查(如 ESLint),仅建议临时使用。
3. 修复钩子依赖环境
-
Node.js 路径问题:若钩子调用 Node 命令但系统未识别:
- 确认 Node 已安装:
node -v
- 在 Shebang 行使用完整路径(如
#!/usr/bin/env node
)。
- 确认 Node 已安装:
-
权限问题:确保钩子文件可执行:
bashchmod +x .git/hooks/pre-commit
4. 重新初始化 Husky(如适用)
若使用 Husky 管理钩子:
-
删除
.git/hooks
目录:bashrm -rf .git/hooks
-
重新安装 Husky:
bashnpx husky install
-
重建钩子链接:
bashnpx husky add .husky/pre-commit "npm test"
5. 验证用户配置
确保 Git 全局配置正确(虽非直接原因,但需排除干扰):
bash
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
总结步骤优先级:
- 检查并修正钩子脚本语法(尤其是 Shebang 行)→ 解决 90% 问题。
- 临时用
--no-verify
提交 → 快速绕过。 - 重装 Husky 或修复依赖环境 → 适用于工具链问题。
- 验证基础配置 → 排除其他干扰。