Git post接收钩子不工作,但post提交工作
长话短说,我在github上创建了一个测试repo,并在我的linux机器上本地克隆了它。创建了具有以下内容的提交后挂钩:Git post接收钩子不工作,但post提交工作,git,Git,长话短说,我在github上创建了一个测试repo,并在我的linux机器上本地克隆了它。创建了具有以下内容的提交后挂钩: #!/bin/bash echo Test message 为钩子添加了perms777,更改了一个文件,当我执行提交时,我在控制台上得到了消息。因此,post-commit钩子似乎有效。我现在将钩子从post commit重命名为post receive,但在推送之后,我没有收到任何消息。我不断提交并推送至主控,但未显示任何消息。钩子是一样的,有777,有相同的内容,所
#!/bin/bash
echo Test message
为钩子添加了perms777,更改了一个文件,当我执行提交时,我在控制台上得到了消息。因此,post-commit钩子似乎有效。我现在将钩子从post commit重命名为post receive,但在推送之后,我没有收到任何消息。我不断提交并推送至主控,但未显示任何消息。钩子是一样的,有777,有相同的内容,所以我不明白为什么post提交钩子工作,而post接收钩子不工作。我遗漏了什么明显的东西吗?假设你有两份回购协议
post commit
的工作原理如下
您将post commit放在本地repo中,每次在本地repo中提交后,它都会执行。这在你的情况下有效
pos-receive
的工作原理如下
这个钩子将在收到提交后运行。所以,如果你把它放在本地回购协议中,这就行不通了。此挂钩必须位于原始回购协议上。每当你推到这个原点,在收到你的提交后,这个hoook将在原点执行。
简而言之,
post receive
将对从其他回购接收提交的回购起作用。(在本例中为github上的回购)。希望这能有所帮助。简而言之,提交后
是客户端钩子,而接收后
是服务器端钩子,必须安装在推送到的远程存储库中
更详细地说,git将只在本地git存储库的.git/hooks
目录中查找客户端钩子,并且只为这个本地repo运行这些钩子。类似地,git将只在远程存储库的hooks
目录中查找服务器端钩子,并在任何repo尝试推送到它时运行这些钩子。你可以阅读更多关于哪个是哪个的信息
“修复”是将mv
您的post-receive
挂接到远程(源)存储库的hooks
目录中,该目录可以通过git-remote-v
请注意,如果您正在使用或类似工具,出于安全原因,不允许访问安装挂钩,例如,请参阅,您将需要使用或类似工具。如果可能,将pos接收挂钩放入gihub回购,则pos接收挂钩将起作用。然后,当您执行
git push
时,它将执行。