提交代码时husky调用出现额外_/路径,Windows下提交失败
问题原因分析
这个报错的核心是Windows与Unix系统的路径处理逻辑差异,结合Husky版本特性,具体原因如下:
路径分隔符不兼容
在Mac的zsh(类Unix shell)环境中,$(dirname "$0")返回.husky(正斜杠分隔的相对路径),拼接/_/husky.sh后得到正确的.husky/_/husky.sh路径。
但在Windows环境下,Git Hooks的执行环境(如Git Bash)中,$0对应的脚本路径会被解析为反斜杠分隔的格式(比如.husky\pre-commit),此时dirname "$0"返回结果是.husky\。当脚本尝试拼接/_/husky.sh时,部分shell会将\/解析为路径分隔符,最终错误生成.husky/_/_/husky.sh路径,导致文件找不到。Husky 9的钩子写法不匹配
Husky 9之后,官方已不再推荐手动引用husky.sh的写法,而是直接调用husky命令。你当前的脚本沿用了旧版本Husky的手动路径拼接逻辑,这种写法在Windows的路径解析规则下更容易触发错误。Git配置的路径转换干扰
如果Windows上Git的core.autocrlf等路径相关配置不合理,可能会导致脚本中的路径字符串在执行时被错误转换,进一步加剧路径解析的混乱。
内容的提问来源于stack exchange,提问作者connexo
相关产品推荐
相关产品推荐

