You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git Gui(Windows版)无法触发prepare-commit-msg钩子求助

问题分析与解决

你遇到的问题是Windows环境下Git Gui未触发prepare-commit-msg钩子,核心原因和解决办法如下:

核心原因

Windows平台上,Git Gui默认使用Windows原生命令行环境(如cmd.exe),而你的钩子脚本使用的是类Unix系统的#!/bin/sh shebang声明,Git Gui无法正确识别并调用bash执行该脚本,导致钩子不触发。

另外需要注意:Windows系统可能会自动给钩子文件添加.txt扩展名(比如变成prepare-commit-msg.txt),Git会忽略带扩展名的钩子文件,这也是常见的触发失败诱因。

解决办法

方法1:修改脚本的shebang行

将脚本开头的#!/bin/sh替换为Git自带bash的完整路径(根据你的Git安装路径调整),示例:

#!/C/Program\ Files/Git/bin/bash.exe
# prepare-commit-msg hook
echo $0
filename=$(date | sed 's/[^0-9]//g') # date
touch $filename.txt # create a new file
exit 0

注意路径中的空格需要用反斜杠转义,或者用引号包裹路径。

方法2:确保钩子文件无扩展名

在Windows资源管理器中开启「显示文件扩展名」选项,检查钩子文件名是否为prepare-commit-msg(无.txt或其他后缀),若有扩展名直接删除。

方法3:改用Windows原生脚本格式

如果不想依赖bash,可以将钩子改成批处理脚本(文件名仍为prepare-commit-msg),示例:

@echo off
echo %0
for /f "tokens=*" %%a in ('date /t') do set dt=%%a
set filename=%dt:/=-%
set filename=%filename: =%
type nul > %filename%.txt
exit /b 0

内容的提问来源于stack exchange,提问作者SebastianRV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:34:58