在我的接收后钩子(Hook)中,我想运行这个简单的钩子(Hook),如果您取出回声,实际上只有两行。

我通过ssh(ing)进入服务器并仔细检查路径来验证命令是否正确。

但是我得到这个错误:



什么是“。”是什么意思,为什么它不起作用。如果我在服务器上手动输入这些命令,它们将正常工作。

但是他们没有。

接收后挂钩

#!/bin/sh

echo "****"
echo "*****"
echo "start:post-receive"
echo "*****"
echo "****"

cd /home/user_name/public_html
git pull /home/user_name/root.git master

echo "****"
echo "*****"
echo "end:post-receive"
echo "*****"
echo "****"

最佳答案



那是因为它是在挂钩本身执行期间设置的。
查看该挂钩脚本中echo $GIT_DIR告诉您的内容。

通过执行“unset GIT_DIR”,您将强制git在/home/user_name/public_html(应该具有.git子文件夹)中查找您刚刚更改文件夹的git目录:

我还建议在钩子(Hook)中的任何git命令中使用--git-dir--work-tree选项。这样,就不足为奇了。例如,参见“Deploy website using Git/Gitolite ( post-receive hook doesn't work properly)

关于git - Git在执行钩子(Hook)时无法识别存储库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35832428/

10-14 15:58
查看更多