Windows 7下Git Hook脚本报错:ambiguous redirect问题求助
Git pre-commit钩子"ambiguous redirect"错误排查
嘿,我来帮你搞定这个问题!你遇到的「ambiguous redirect」错误,根源是把pre-commit钩子和commit-msg钩子的逻辑搞混了。
问题出在哪?
你写的这行代码:
echo "# Please include a useful commit message!" > $1
这里的$1是想指代提交消息的文件路径,但Git的pre-commit钩子根本不会传入任何命令行参数——$1是空值,shell找不到要重定向的目标,自然就抛出了“模糊重定向”的错误。
只有commit-msg钩子在触发时,才会把存储提交消息的临时文件路径作为$1参数传给脚本,这是Atlassian教程里可能提到的另一个钩子类型。
怎么解决?
分两种情况处理:
- 如果你是想强制用户写有意义的提交信息,应该把这段代码放到commit-msg钩子里,而不是pre-commit钩子。commit-msg钩子会在用户输入提交消息后、真正完成提交前触发,刚好可以用来修改或校验提交消息。
- 如果你只是想在pre-commit阶段给用户一个提示,不需要修改提交消息,那直接去掉重定向就行:
#!/bin/sh echo "# Please include a useful commit message!"
另外补充下:你的Git版本2.10.2.windows.1对钩子的参数规则和新版本是一致的,不是版本的问题哦。
内容的提问来源于stack exchange,提问作者user9141560
相关产品推荐
相关产品推荐

