2011-12-27 221 views
9

我有一个HTTPS访问远程存储库。Git:HTTP请求失败

git status只列出一个条目:主

git remote -v列出两个条目相同的地址:一个用于读取,一个用于推

但是当我做git remote show origin,或其他操作,如fetch,我得到:

error: while accessing https:... 
fatal: HTTP request failed 

我身后的代理,但因为它是在我的.gitconfig设置(sslVerify = NO)和克隆就OK了,我不认为这个问题来自于。

但是...我的操作系统(CentOS)已重新安装。 。

+0

你可以分享源代码的urls'git remote -v'的前6个字符,使用的协议 - http,https,ssh或git? – 2012-01-04 06:16:25

回答

3

我已经设置HTTP代理在HTTP_PROXY环境变量(GIT猛砸在Windows上),但只设置在我的%HOME%/代理gitconfig工作:

[http] 
    proxy = http://USERNAME:[email protected]:PORT 
+1

环境变量区分大小写,并且它正确地设置为'http_proxy'。 (某些软件当然可以处理这两种情况,但有些软件并不会!) – 2013-06-25 14:19:22

25

如果您使用https:而不是你的克隆的git:,它有可能在CA证书上出现问题,即你没有中间证书的副本来验证你的SSL连接。我遇到过几次不同的场合。通常使用基于Debian的Linux发行版。尝试

git config --global http.sslVerify false 

然后再次克隆。如果克隆工作,那就是发生了什么。然而,这是一个不好的解决方案,因为当然会关闭SSL验证,这使得使用HTTPS有点毫无意义,并且让您容易受到中间人攻击。

你需要做的就是下载CA证书包你在任何OS,Linux下(以及于Debian/Ubuntu),它很可能会像

apt-get install ca-certificates 

然后

git config --global http.sslVerify true 
git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt 

尽管您的证书文件路径可能会因操作系统版本而异。

这应该让它工作。

+1

供参考此答案适用于BeagleBone嵌入式Linux。 – 2013-11-27 23:56:24

+0

你需要在Beaglebone上做的另一件事是启用ntp。 Angstrom linux没有安装ntp,Beaglebone没有电池备份时钟。这意味着日期设置为2000年1月1日启动。这会导致各种问题,包括使SSL证书无效。 – 2013-12-08 00:28:18

0

我得到了同样的错误,但其他问题超出其余答案中提到的。我试图克隆Linux上的库:

git clone http://xxx/scm/xxx/xxx.git 
Initialized empty Git repository in /opt/git/xxx/.git/ 
Password: 
error: Failed connect to xxx:80; Operation now in progress while accessing http://xxx.git/info/refs 

fatal: HTTP request failed 

这一切都是因为错误的权限到文件夹 - 但混帐,而不是一些权限错误抛出HTTP请求失败。所以如果有人会遇到类似的问题 - 检查文件夹的权限!