当尝试从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.
请注意,由于这种情况发生在我们尝试的每个 github存储库中,我们坚信它不是存储库中refs的问题.我们已经尝试过像jquery和rails这样众所周知的存储库 - 如果问题存在于那些存储库中,那么会有很多人抱怨.我坚信问题在于git和代理,但我所有的谷歌搜索都没有找到解决方案.
作为一个额外的数据点,如果它们是http,克隆似乎工作正常.只有https克隆因此错误而失败.
请注意,我不认为这个问题是重复的,因为此错误的其他问题集中在存储库的问题 - 不使用git和代理.
我通过这篇文章偶然发现了这个问题的解决方案:
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
希望这有助于某人.
上面提到的包可以在这里找到:
http://packages.ubuntu.com/en/precise/amd64/libp11-kit0/download
http://packages.ubuntu.com/en/precise/amd64/libgnutls26/download
http://packages.ubuntu.com/en/precise/amd64/libcurl3-gnutls/download
我使用这些版本,并且能够在代理后面使用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
在链接的Ubuntu错误中找到的解决方法:
将以下内容添加到〜/ .gitconfig或/ etc/gitconfig中
# Workaround for bug when using SSL and HTTP proxy (LP #940431) [url "http://"] insteadOf = "https://"
不再需要从12.04开始.