代理后面的git:远程HEAD指的是不存在的ref,无法签出

时间:2011-12-06 17:03:06

标签: git github

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

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。

请注意,由于我们已尝试使用 EVERY github存储库,因此我们坚信存储库中的refs不存在问题。我们已经尝试过像jquery和rails这样众所周知的存储库 - 如果问题存在于那些存储库中,那么很多人都在抱怨。我坚信问题在于git和代理,但我所有的谷歌搜索都没有找到解决方案。

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

请注意,我不认为此问题是重复的,因为此错误的其他问题主要集中在存储库的问题上 - 不使用git和代理。

4 个答案:

答案 0 :(得分:19)

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

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

希望这有助于某人。

答案 1 :(得分:10)

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

我使用了这些版本,并且能够在代理后面使用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

答案 2 :(得分:9)

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

  

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

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

不再需要从12.04开始。

答案 3 :(得分:0)

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

将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