【问题标题】:git pull in hooks/post-receive failedgit pull in hooks/post-receive 失败
【发布时间】:2012-06-03 12:52:45
【问题描述】:

在服务器上,/home/git/xxx/hooks/post-receive:

#!/bin/bash

cd /var/www/xxx
git pull

在服务器上,/var/www/xxx 是这样创建的:

cd /var/www
git clone /home/git/repositories/xxx.git

当我在客户端运行“git push”时,收到了这条消息:

remote: fatal: Not a git repository: '.'

有什么想法吗?

【问题讨论】:

  • 你能在上面提到,哪一个是客户端,哪一个是服务器?我很困惑!
  • 你能发布git push的完整输出吗?不清楚错误信息是来自客户端错误还是服务器错误。

标签: git githooks git-pull git-post-receive


【解决方案1】:

您缺少拉取的目录,

cd /var/www
git clone /home/git/repositories/xxx.git

上述命令将在 /var/www 下创建一个新目录为 xxx,前提是您的应用程序名称为 xxx。

现在你需要进入这个新创建的目录,例如,

cd /var/www/xxx

现在运行命令“git push”。这应该可以。

【讨论】:

  • 我想我没有让自己理解。我的英语很差。
  • 我有一个 git 服务器,它同时是 web 服务器。 git控制下的项目是一个网站。我希望每次将更改从工作 PC 推送到服务器时,网站都会自动更新。
【解决方案2】:

根据您的评论,您希望在将更改推送到 Git 存储库时自动更新网站。试试这个:http://www.ekynoxe.com/automated-deployment-on-remote-server-with-git/

请注意,网站根目录 (/var/www/xxx) 本身并不是 Git 存储库;它只是保存工作树。

【讨论】:

  • 链接已损坏:-/
【解决方案3】:

here 所述,问题在于调用钩子时GIT_DIR 设置为.

如果您在 post-receive 挂钩中取消设置 GIT_DIR,它应该可以工作:

#!/bin/bash

unset GIT_DIR
cd /var/www/xxx
git pull

【讨论】:

    【解决方案4】:

    Repositories 文件夹应该是裸存储库。

    git init --bare
    

    【讨论】:

      猜你喜欢
      • 2017-08-14
      • 2012-12-06
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      • 2019-01-30
      相关资源
      最近更新 更多