Git hook:“;致命:不是git存储库;
我的设置与我在新服务器上创建的设置类似,因此我知道“原理可行”。我有一个Git post receive,如下所示:Git hook:“;致命:不是git存储库;,git,githooks,Git,Githooks,我的设置与我在新服务器上创建的设置类似,因此我知道“原理可行”。我有一个Git post receive,如下所示: #!/bin/sh git --work-tree="~/public_html" --git-dir="~/repo/website" checkout master -f 我已经检查了十次这些文件夹是否存在且正确:-) 为了设置Git repo,我运行了以下命令: cd ~/repo/website git init --bare #
#!/bin/sh
git --work-tree="~/public_html" --git-dir="~/repo/website" checkout master -f
我已经检查了十次这些文件夹是否存在且正确:-)
为了设置Git repo,我运行了以下命令:
cd ~/repo/website
git init --bare
# Added content to post-receive file
chmod +x hooks/post-receive
# Verified that these permissions are set on the file
我在回购协议中添加(推送)了一些内容以供测试。现在,当我尝试使用此命令执行测试命令时:
cd ~/repo/website && bash hooks/post-receive
我得到这个错误:
fatal: not a git repository: '~/repo/website'
然后我试图完全删除回购协议,从头开始。但在第四次尝试时,我开始认为这不是前进的方向;-)
我在相关的Stackoverflow线程上读到,可能头文件已损坏。然而,它看起来很好,并且已经与其他从头开始的尝试一起重新制作了四次
出于部署原因,我需要设置工作树,等等。在其他服务器上使用相同的设置可以很好地工作
我希望有人知道如何解决这个问题。谢谢 shell仅当位于单词开头时才展开。你有一个词的中间。 你应该写
#!/bin/sh
git --work-tree="$HOME/public_html" --git-dir="$HOME/repo/website" checkout -f master
除此之外,由于~
出现在双引号内,因此该字符将被视为“quoted”,并且无论shell是否能够猜出--git dir=
具有某种特殊含义,都不会被修改