2009-01-30 1479 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 
相关问题