Git钩子更新后文件未运行

Git钩子更新后文件未运行,git,bash,hook,Git,Bash,Hook,我在当地设立了一个测试项目 ~/development/test/ 我已经在上面初始化了git,我可以推到远程“测试”回购协议。没问题 我可以从命令行手动运行更新后挂钩 ./post-update 它将启动web浏览器,因为该文件包含以下内容: #!/bin/bash echo "Hook is running........." python -mwebbrowser http://example.com 但是当我执行一个gitpush-uoriginmaster时,文件似乎没有运行。b

我在当地设立了一个测试项目

~/development/test/
我已经在上面初始化了git,我可以推到远程“测试”回购协议。没问题

我可以从命令行手动运行更新后挂钩

./post-update
它将启动web浏览器,因为该文件包含以下内容:

#!/bin/bash
echo "Hook is running........."
python -mwebbrowser http://example.com
但是当我执行一个
gitpush-uoriginmaster
时,文件似乎没有运行。bash脚本中的所有内容似乎都没有发生

我已按说明正确设置了文件权限


还有什么好办法吗?

我想你用错了钩子。说:

更新后由远程存储库上的
git receive pack
调用, 在本地存储库上完成git推送时会发生这种情况它 在删除所有引用后,在远程存储库上执行一次 更新

你想要一个不存在的柱子推钩。相反,您可以使用预推挂钩

pre-push
git-push
调用。如果此钩子以非零值退出 状态,git push将中止而不推任何内容

将在执行推送之前打开web浏览器,但如果您在后台任务(使用字符
&
)上打开它并返回
0
,它将执行您正在查找的操作

您的脚本将成为

#!/bin/bash
echo "Hook is running........."
python -mwebbrowser http://example.com &
exit 0

在执行了
git push
之后,您是否有错误消息?@流完全没有错误。啊,这就成功了。虽然,我需要阅读/理解文档,因为我想与人共享这个钩子,但现在它只在我的本地机器上,对吗?是的,很难共享钩子。您可以在所有开发者
.git/hook
文件夹中创建指向钩子的符号链接,或者提交一个文件夹
hook
,其中包含要启动的钩子和脚本以安装它们。但是,用git部署钩子并不是一个简单的方法。