49

我的 msysGit(Windows 上的 Git)在我的家用机器上工作得很好,但是在工作中,我们在 Microsoft ISA 代理后面,当我执行 git clone 时出现以下错误:

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 clone会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 代理?我不知道这是否值得追求。非常感谢任何帮助。

谢谢!

4

7 回答 7

61

我有完全相同的错误;但~/.gitconfig全局配置文件是关键。

如果你有一个带身份验证的代理,你需要把它放进去:

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

它只是工作(使用' git clone http:')

详细介绍相同设置的博客示例:通过 HTTP 进行 GIT 克隆:谁知道?


如果它仍然在 407 中失败,则可能与git-fetch 在第二个 HTTP GET 上丢失身份验证令牌的问题有关。可能需要更新版本的 libcurl 。


2011 年 1 月更新:jbustamovej他的回答(赞成)他的博客文章“企业代理背后的 GitHub”中提到,其中添加了以下内容:

需要注意的是,如果您的登录有反斜杠,如 中domain\login您必须转义反斜杠,如:

git config --global http.proxy http://domain\\\login:password@our-proxy-server:8088
于 2009-01-30T17:57:26.147 回答
19

即使在配置代理之后,您也可能无法连接,因为代理不允许 git 协议流量。在这种情况下,您可能想尝试使用“http”而不是“git”

H:>git 克隆 http://github.com/akitaonrails/vimfiles.git

此外,如果您使用的是自动代理配置文件 (.pac),只需在文本编辑器中打开它。这是一种很容易遵循的脚本语言,有很多条件可以重定向到最有效的代理。找到允许通用流量的那个(通常是最后配置的代理),并按照上面评论中的说明进行配置。

于 2009-05-13T19:06:34.080 回答
3

你有 SOCKS 代理吗?如果你有,你可以试试FreeCap来整理你的 git 连接。我以这种方式使用 git 已经有一段时间了。

如果没有,仍然尝试 FreeCap。IIRC 它可能能够使用 http 代理,但我还没有尝试过。

编辑:我通常使用 FreeCap 对cmd.exe进行socksify ,从那时起(几乎)我从该会话开始的所有 cmdline 程序也都进行了 socksified。这就是我推荐 Free Cap 的原因,因为 SocksCap(另一种选择)不能那样工作。

至于使用 http.proxy,由于某种原因,它对我的​​ mingw 版本和我的公司 http 代理没有用。

于 2009-01-30T16:59:25.500 回答
2

我设法通过一条非常复杂的路线让它工作。就是这样:

  1. 在 Cygwin 下运行的家用机器(Vista 机器)上运行OpenSSH
  2. 我正在通过集成的 SOCKS/HTTP CONNECT 代理使用 Bitvise Tunnelier 的动态隧道
  3. 然后我使用Freecap(感谢 Marko)来“SOCKify”GIT-GUI。不幸的是,您必须单独设置每个 .exe 并从 Freecap 中运行它们,因此您不能通用地对所有 git 命令行工具进行 SOCKify。您可以在 Freecap 中设置显式命令行命令,但您必须单独设置每个命令,这与目的不符。这就是为什么我刚刚在这个疯狂的精心设计的系统中设置了 GIT-GUI

令人惊讶的是,它似乎工作,虽然我还没有测试一切。当然,它会克隆,这是一个开始。

如果有人有更好的解决方案,我会全力以赴。

于 2009-01-30T18:33:11.770 回答
1

Python 2.7 和ntlmaps在从 GitHub 收到 407 错误和其他垃圾后为我工作。

.gitconfig :

[http]
      proxy = http://127.0.0.1:5865
于 2011-04-12T14:32:44.713 回答
1

这对我有用:

git config --global http.proxy http://login:password@PROXY_SERVER:PORT
git config --global http.sslVerify false
于 2015-02-03T20:35:33.630 回答
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.
于 2010-08-11T13:04:42.417 回答