【问题标题】:git behind proxy: remote HEAD refers to nonexistent ref, unable to checkout代理后面的 git:远程 HEAD 引用不存在的 ref,无法结帐
【发布时间】:2012-01-14 06:49:07
【问题描述】:

当尝试通过 https 从 github 克隆任何存储库时,我们得到:

git clone https://github.com/rails/rails.git
Cloning into rails...
remote HEAD refers to nonexistent ref, unable to checkout

我们的服务器位于代理后面。我们已经适当地定义了 http_proxy 和 https_proxy。所有其他功能都在工作。

git 版本是 1.7.5.4

服务器是 Ubuntu Server 11.04。

请注意,由于我们尝试过的 每个 github 存储库都会发生这种情况,因此我们坚信存储库中的 ref 没有问题。我们已经尝试过 jquery 和 rails 等知名存储库 - 如果问题出在这些存储库中,会有很多人抱怨。我坚信问题出在 git 和代理上,但我所有的谷歌搜索都没有找到解决方案。

作为一个额外的数据点,如果克隆是 http,它们似乎可以正常工作。只有 https 克隆因此错误而失败。

请注意,我不认为这个问题是重复的,因为与此错误有关的其他问题集中在存储库的问题上 - 不适用于 git 和代理。

【问题讨论】:

    标签: git github


    【解决方案1】:

    我通过这篇文章偶然发现了这个问题的解决方案:

    http://comments.gmane.org/gmane.comp.version-control.git/185459

    这个问题显然是安装在 Ubuntu 服务器 11.04 中的 libcurl 版本中的一个错误。简单地运行 apt-get install libcurl3-gnutls 并不足以解决问题,因为它只是报告最新版本已经安装。

    为了解决这个问题,我不得不手动安装最新的 libcurl3-gnutls 和两个依赖项,如下所示(显然,在先将它们下载到我的系统之后):

    sudo dpkg -i libp11-kit0_0.6-0ubuntu2_amd64.deb
    sudo dpkg -i libgnutls26_2.12.14-3_amd64.deb
    sudo dpkg -i libcurl3-gnutls_7.22.0-3ubuntu1_amd64.deb
    

    希望这对某人有所帮助。

    【讨论】:

    • 这对我来说效果很好,为了精确起见,将包从 repo 中拉出来。
    • 也在这里工作,即使我收到以下错误消息:“p11-kit:无法加载模块:/usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring- pkcs11.so:/usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring-pkcs11.so:无法打开共享对象文件:没有这样的文件或目录”。 Reported to Ubuntu.
    • dpkg: 错误处理 libcurl3-gnutls_7.22.0-3ubuntu4_amd64.deb (--install): 包架构 (amd64) 与系统 (i386) 不匹配。凉爽的。您能否也发布 32 位解决方案。我实际上使用了 Alexey Romanov 的解决方案。
    • 我刚刚成功安装了 libp11-kit0_0.6-0ubuntu2_amd64.deb 并解决了问题,谢谢!
    【解决方案2】:

    上面提到的包可以在这里找到:

    我使用了这些版本,并且能够在代理后面使用 git 没有问题:

    $ sudo dpkg -i libp11-kit0_0.10-1_amd64.deb libgnutls26_2.12.14-5ubuntu2_amd64.deb libcurl3-gnutls_7.22.0-3ubuntu2_amd64.deb
    

    【讨论】:

      【解决方案3】:

      在链接的 Ubuntu 错误中找到的解决方法:

      将以下内容添加到 ~/.gitconfig 或 /etc/gitconfig

      # Workaround for bug when using SSL and HTTP proxy (LP #940431)
      [url "http://"]
       insteadOf = "https://"
      

      从 12.04 开始不再需要。

      【讨论】:

        【解决方案4】:

        另一个简单的解决方案是:

        将 libcurl3 从 7.21.0 回归到 7.19.5。

        从这里下载:

        amd64: http://launchpadlibrarian.net/30289951/libcurl3-gnutls_7.19.5-1ubuntu2_amd64.deb

        i386: http://launchpadlibrarian.net/30287711/libcurl3-gnutls_7.19.5-1ubuntu2_i386.deb

        【讨论】:

          猜你喜欢
          • 2010-12-29
          • 1970-01-01
          • 2017-05-07
          • 1970-01-01
          • 2016-12-27
          • 2020-01-16
          • 2011-06-23
          • 1970-01-01
          • 2015-11-15
          相关资源
          最近更新 更多