微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Git 钩子:“致命:不是 git 存储库:”

如何解决Git 钩子:“致命:不是 git 存储库:”

我的设置与我在新服务器上创建的设置类似,所以我知道“原理有效”。我有一个 Git post-receive,看起来像这样:

#!/bin/sh
git --work-tree="~/public_html" --git-dir="~/repo/website" checkout master -f

我已经检查了十次这些文件夹是否存在且正确:-)

为了设置 Git 存储库,我运行了以下命令:

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'

然后我尝试完全删除 repo 并从头开始制作。但是在第四次尝试时,我开始认为这不是前进的方向;-)

我在相关的 Stackoverflow 线程上读到可能 HEAD 文件已损坏。然而,它看起来不错 - 并且还与其他从头开始的尝试一起重新制作了四次。

出于部署原因,我需要设置工作树等。在其他服务器上使用相同的设置也能正常工作。

我希望有人知道如何解决这个问题。谢谢!

解决方法

shell 仅在单词开头时扩展 ~/。你把它放在一个词的中间。

你应该写

#!/bin/sh
git --work-tree="$HOME/public_html" --git-dir="$HOME/repo/website" checkout -f master

最重要的是,由于 ~ 出现在双引号内,因此该字符被视为“引用”并且不会被修改,无论 shell 是否可以猜测 --git-dir= 具有某些特殊含义。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。