Git错误:致命:无法连接套接字(无效参数)
我有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代理?我不知道这是否值得追求。非常感谢任何帮助。
谢谢!
我有完全相同的错误;但~/.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
感谢您的提示,但我无法得到这个工作。即使我已经在环境和.gitconfig中设置了代理(完整的用户名和密码),它仍然给我一个407(认证)错误。 – 2009-01-30 18:11:14
您有SOCKS代理吗?如果你有,你可以尝试FreeCap来ocking你的git连接。我一直在用这种方式使用git。
如果不是,仍然尝试使用FreeCap。 IIRC它可能能够使用http代理,但我没有尝试过。
编辑: 我usualy使用FreeCap socksify CMD.EXE,并且从那时起(差不多),我从会议开始所有CMDLINE程序socksified了。这就是为什么我推荐Free Cap的原因,因为SocksCap(另一种选择)不能以这种方式工作。
至于使用http.proxy,它由于某种原因从来没有为我与明治版本和我的公司http代理工作。
感谢您的阅读,FreeCap看起来很有趣。你能详细说明你如何使用Git吗? – 2009-01-30 17:34:02
我已经成功地得到它通过一个非常迂回路线工作。具体方法如下:
- 我已经OpenSSH的我家的机器上运行(Vista的盒子)running under Cygwin
- 我使用的Bitvise Tunnelier的Dynamic tunneling via integrated SOCKS/HTTP CONNECT proxy。
- 然后我使用Freecap(感谢Marko)来“SOCKify”GIT-GUI。不幸的是,你必须单独设置每个.exe文件,并从Freecap内部运行它们,所以你不能单方面SOCKify所有的git命令行工具。你可以在Freecap中设置显式的命令行命令,但是你必须单独设置每一个命令,这种命令会失败。这就是为什么我在这个疯狂的精细系统中设置GIT-GUI的原因
令人惊讶的是,它似乎工作,虽然我还没有测试过所有东西。它肯定会克隆,这是一个开始。
如果任何人有更好的解决方案,我全都听。
即使在配置代理之后,您可能无法连接,因为代理不允许使用git协议通信。在这种情况下,你可能想尝试使用“HTTP”,而不是“混帐”
H:>git clone http://github.com/akitaonrails/vimfiles.git
此外,如果您使用的是自动代理配置文件(的.pac),只需在文本编辑器打开它。遵循脚本语言相当容易,有很多条件可以重定向到最有效的代理。找到允许通用通信量的通信设备(通常是最后配置的代理服务器),并按上述注释中的说明对其进行配置。
我对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.
这里是我工作:
git config --global http.proxy http://login:[email protected]_SERVER:PORT
git config --global http.sslVerify false
只是增加了一个可能的解决 – VonC 2009-01-30 18:26:59
感谢您的反馈。我认为你现在有一个Git1.6.4? – VonC 2009-09-11 18:23:37