2009-01-30 1472 views
44

我有msysGit(Git在Windows上)在我的家用機器上工作得很好,但在工作中,我們在Microsoft ISA代理後面,我得到以下錯誤,當我做混帳克隆:Git錯誤:致命:無法連接套接字(無效參數)

H:\>git clone git://github.com/akitaonrails/vimfiles.git 
Initialized empty Git repository in H:/vimfiles/.git/ 
github.com[0: 65.74.177.129]: errno=Invalid argument 
fatal: unable to connect a socket (Invalid argument) 

我已經嘗試設置環境變量http_proxy到:

http://our-proxy-server:8088 

我設置git的http.proxy配置指令:

git config --global http.proxy http://our-proxy-server:8088 

以上都沒有影響。

否則與http://代替git://一個git克隆產生這樣的:

H:\>git clone http://github.com/akitaonrails/vimfiles.git 
Initialized empty Git repository in H:/vimfiles/.git/ 
fatal: http://github.com/akitaonrails/vimfiles.git/info/refs download error - The requested URL returned error: 407 

407當然是一個驗證錯誤。

所以我的問題是:有沒有人設法讓git從代理後面工作,特別是ISA代理?我不知道這是否值得追求。非常感謝任何幫助。

謝謝!

+0

只是增加了一個可能的解決 – VonC 2009-01-30 18:26:59

+0

感謝您的反饋。我認爲你現在有一個Git1.6.4? – VonC 2009-09-11 18:23:37

回答

54

我有完全相同的錯誤;但~/.gitconfig global config file是關鍵。

如果你有一個代理與認證,就需要把它:

git config --global http.proxy http://login:[email protected]:8088 

,它就可以工作(與「git clone http:」)博客中詳細介紹了相同的設置的

例子:GIT clone over HTTP: who knew?


如果在407中仍然失敗,則可能與git-fetch losing authentication tokens on the second HTTP GET的問題有關。可能需要A more recent version of libcurl


更新2011年1月:jbustamovej提到了his answer (upvoted)他的博客 「GitHub Behind Corporate Proxy」,這增加了這一點:

It’s important to note that if your login has a backslash, as in domain\login , you must escape the backslash, as in:

git config --global http.proxy http://domain\\\login:[email protected]:8088 
+1

感謝您的提示,但我無法得到這個工作。即使我已經在環境和.gitconfig中設置了代理(完整的用戶名和密碼),它仍然給我一個407(認證)錯誤。 – 2009-01-30 18:11:14

3

您有SOCKS代理嗎?如果你有,你可以嘗試FreeCap來ocking你的git連接。我一直在用這種方式使用git。

如果不是,仍然嘗試使用FreeCap。 IIRC它可能能夠使用http代理,但我沒有嘗試過。

編輯: 我usualy使用FreeCap socksify CMD.EXE,並且從那時起(差不多),我從會議開始所有CMDLINE程序socksified了。這就是爲什麼我推薦Free Cap的原因,因爲SocksCap(另一種選擇)不能以這種方式工作。

至於使用http.proxy,它由於某種原因從來沒有爲我與明治版本和我的公司http代理工作。

+1

感謝您的閱讀,FreeCap看起來很有趣。你能詳細說明你如何使用Git嗎? – 2009-01-30 17:34:02

2

我已經成功地得到它通過一個非常迂迴路線工作。具體方法如下:

  1. 我已經OpenSSH的我家的機器上運行(Vista的盒子)running under Cygwin
  2. 我使用的Bitvise Tunnelier的Dynamic tunneling via integrated SOCKS/HTTP CONNECT proxy
  3. 然後我使用Freecap(感謝Marko)來「SOCKify」GIT-GUI。不幸的是,你必須單獨設置每個.exe文件,並從Freecap內部運行它們,所以你不能單方面SOCKify所有的git命令行工具。你可以在Freecap中設置顯式的命令行命令,但是你必須單獨設置每一個命令,這種命令會失敗。這就是爲什麼我在這個瘋狂的精細系統中設置GIT-GUI的原因

令人驚訝的是,它似乎工作,雖然我還沒有測試過所有東西。它肯定會克隆,這是一個開始。

如果任何人有更好的解決方案,我全都聽。

19

即使在配置代理之後,您可能無法連接,因爲代理不允許使用git協議通信。在這種情況下,你可能想嘗試使用「HTTP」,而不是「混帳」

H:>git clone http://github.com/akitaonrails/vimfiles.git

此外,如果您使用的是自動代理配置文件(的.pac),只需在文本編輯器打開它。遵循腳本語言相當容易,有很多條件可以重定向到最有效的代理。找到允許通用通信量的通信設備(通常是最後配置的代理服務器),並按上述註釋中的說明對其進行配置。

0

我對Windows7的這個問題:

$ git clone git://github.com/facebook/php-sdk.git 
Initialized empty Git repository in c:/Users/Jay/temp/php-sdk/.git/ 
github.com[0: 207.97.227.239]: errno=No error 
fatal: unable to connect a socket (No error) 

終於意識到這是AVG反病毒軟件的運行。我禁用AVG中的「駐地盾牌」,現在就像一種魅力。

$ git clone git://github.com/facebook/php-sdk.git 
Initialized empty Git repository in c:/Users/Jay/temp2/php-sdk/.git/ 
remote: Counting objects: 223, done. 
remote: Compressing objects: 100% (179/179), done. 
emote: Total 223 (delta 84), reused 0 (delta 0) 
Receiving objects: 100% (223/223), 37.32 KiB, done. 
Resolving deltas: 100% (84/84), done. 
1

Python 2.7和ntlmaps在得到來自GitHub的407錯誤和其他垃圾後爲我工作。

的.gitconfig:

[http] 
     proxy = http://127.0.0.1:5865 
1

這裏是我工作:

git config --global http.proxy http://login:[email protected]_SERVER:PORT 
git config --global http.sslVerify false 
相關問題