如何在代理后面使用git

时间:2011-04-03 11:09:24

标签: git proxy

我在代理后面使用msysgit。正如我所说的Getting git to work with a proxy server

我已将系统变量http_proxy设置为值。后来我打电话给

git config --global http.proxy $http_proxy

但是,如果我打电话给:

git clone git://git.savannah.gnu.org/gnuprologjava.git

它出现以下错误:

git.savannah.gnu.org[0; 140.186.70.72]: errno=No error
fatal: unable to connect a socket (No error)

3 个答案:

答案 0 :(得分:23)

如果你在http代理后面,你应该使用http git urls。 Savannah.gnu.org上的UsingGit页面告诉您正确的语法。对于那个回购:

git clone http://git.savannah.gnu.org/r/gnuprologjava.git

答案 1 :(得分:7)

当您使用Linux时,请参阅this page

在Windows上我已经解决了这个问题;

安装Cygwin,然后选择socat包。创建一个脚本gitproxy.cmd并将其保存在路径中(我使用C:\ msysgit \ cmd \ gitproxy.cmd):

@echo off
C:\cygwin\bin\socat.exe - PROXY:192.168.100.1:\%1:\%2,proxyport=3128

(用您自己的代理IP /端口替换192.168.100.1和3128)

执行以下行以配置代理:

git config --global core.gitproxy gitproxy.cmd

请注意,代理服务器必须接受git端口的CONNECT命令(9418)。我已将以下行添加到squid配置中以使其工作:

acl SSL_ports port 9418         # git
acl Safe_ports port 9418        # git

(即配置端口9418的方式与代理服务器中的端口443相同)

答案 2 :(得分:3)

许多人都回答了这个问题,但这仅适用于使用身份验证代理的 Windows 用户。

重新安装(首先失败,不要删除)。

Go to: 
1. msysgit\installer-tmp\etc\gitconfig
    Under [http]
        proxy = http://user:pass@url:port
2. msysgit\installer-tmp\setup-msysgit.sh
      export HTTP_PROXY="http://USER:PASS@proxy.abc.com:8080"

如果您在用户/通行证使用url_encode

中有任何特殊字符

选项2: 设置环境变量

HTTP_PROXY = http://proxy.com:8080