2011-12-27 139 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請求失敗。所以如果有人會遇到類似的問題 - 檢查文件夾的權限!