提交代码触发.git/hooks/pre-commit钩子段错误(Segmentation fault:11)求助
解决Git预提交钩子的Segmentation fault: 11错误
问题分析
你的Git预提交钩子(.git/hooks/pre-commit)在执行第92行的${CMD}命令时触发了段错误(进程ID 18278,错误类型Segmentation fault: 11)。这类错误本质是程序尝试访问不属于自身的内存区域,通常和依赖工具兼容性问题、二进制文件损坏、命令参数异常或是工具本身的bug有关。
排查与修复步骤
- 定位具体命令:在
pre-commit脚本第91行添加echo ${CMD},重新执行提交,明确到底是哪个工具/命令在报错。常见的预提交工具如flake8、black、自定义二进制程序都可能出现这类问题。 - 单独测试命令:直接在终端执行输出的
${CMD}内容,看是否会重现错误。如果单独运行也崩溃,说明问题出在工具本身,和钩子无关:- 若是Python类工具,先卸载重装:
pip uninstall -y <工具名称> pip install <工具名称> - 若是二进制工具,重新编译或替换为适配当前系统(比如ARM/Intel架构)的版本。
- 若是Python类工具,先卸载重装:
- 检查参数与环境:确认
${CMD}的参数是否存在异常,比如传递了超大文件、含特殊字符的路径,或是空值参数。同时检查当前环境变量是否正常,比如Python版本、系统架构是否和工具兼容。 - 临时跳过钩子验证:执行
git commit --no-verify跳过预提交钩子,确认Git提交本身是否能正常完成,排除Git核心功能的问题。 - 修改钩子脚本:如果确认是钩子脚本的逻辑问题,可暂时注释第92行的命令,或替换为更稳定的实现,待问题排查完成后再恢复。
内容的提问来源于stack exchange,提问作者Shailesh Mishra
相关产品推荐
相关产品推荐

