我在尝试使用msysgit(Windows 7 Pro/32和Ultimate/64)来正确运行post-recieve和post-commit钩子时遇到了问题。 如果我从git-bash或控制台提交,对于post-commit钩子,我会得到上面的错误,但如果通过git-gui提交,则可以正常工作。 对于post-recieve钩子,所有三个都给出相同的错误。 我认为这是某种权限或路径错误,但我真的不知道从哪里开始。
在钩子的第一行添加 SHEBANG,像这样:
#!/bin/sh
echo "executing post-commit"
exit 0
这个问题曾经让我也束手无策,后来发现添加 shebang 就解决了。在 SVN 的世界里,*nix 中有一个“pre-commit”脚本,在 Windows 中有“pre-commit.bat”,SVN 在 Windows 中会自动选择 bat 文件。然而,Git 似乎不会选择 pre-commit.bat(或任何钩子),添加 shebang 到钩子文件中能够解决问题。
我正在使用SourceTree和git LFS,并遇到了类似的问题:无法生成.git/hooks/pre-push
。
解决方法是删除pre-push
文件(打开它后发现它已经损坏),然后重新启动SourceTree,此时它会重新生成pre-push
文件,一切回归正常。
post-checkout
文件损坏了。 - Mark<path_to_git>
\bin 添加到你的路径环境变量中。<path_to_git>
\cmd 添加到你的路径环境变量中。在使用LFS的存储库中遇到了这个问题,通过git lfs update --force
命令解决了它。
C:\Program Files (x86)\Git\bin
和..\cmd
)。我是否有什么误解? - BarneySetEnv PATH "c:/Program Files (x86)/Git/bin;"
对我来说,在 shebang 行前面删除注释行解决了错误。奇怪的是,脚本在 shell 中运行得很好,但作为钩子运行时出错。