当Git pre-commit钩子失效时,可以按照以下步骤进行排查:
ls -la .git/hooks/pre-commit
cp .git/hooks/pre-commit.sample .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
#!/bin/sh
或#!/usr/bin/env bash
)git config --global core.hooksPath
git config --global --unset core.hooksPath
手动运行钩子脚本:
.git/hooks/pre-commit
观察输出和返回码(echo $?
)
git --version
.git/hooks
目录和pre-commit
文件对当前用户可读可执行GIT_TRACE=1 git commit -m "test"
这会显示钩子是否被执行以及执行过程中的详细信息
--no-verify
参数被使用在pre-commit脚本开头添加:
set -x # 开启调试模式
或
exec > /tmp/pre-commit.log 2>&1 # 重定向输出到日志文件
如果问题仍然存在,建议简化pre-commit脚本到最基本形式,逐步添加功能以定位问题。