在我的接收后钩子(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/