【问题标题】:Git does not recognize repositories while executing a hookGit 在执行钩子时无法识别存储库
【发布时间】:2016-06-20 08:03:11
【问题描述】:

在我的 post-receive 钩子中,我想运行这个简单的钩子,如果你取出回声,它实际上只有两行。

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

但是我得到了这个错误:

远程:致命:不是 git 存储库:'.'

'.' 是什么意思?意思是为什么它不起作用。如果我在服务器上手动输入这些命令,它们就可以正常工作。

但他们没有。

接收后挂钩

#!/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 "****" 

【问题讨论】:

  • 如果您要尝试在post-receive 挂钩中运行git 命令,您可能需要取消设置GIT_DIR 环境变量。试试看会发生什么。
  • 你能告诉我这是做什么用的吗?我从 shell 运行 set 并没有看到它列出来。

标签: git bash ssh


【解决方案1】:

我从 shell 运行 set 并没有看到它列出

那是因为它是在钩子本身的执行过程中设置的。
看看echo $GIT_DIR 在那个钩子脚本中告诉你什么。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多