如何在代理后面使用git

31 git proxy

我在代理后面使用msysgit.正如我所说的那样,让git与代理服务器一起工作

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

git config --global http.proxy $http_proxy
Run Code Online (Sandbox Code Playgroud)

但是,如果我打电话给:

git clone git://git.savannah.gnu.org/gnuprologjava.git
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

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

Mat*_*Mat 23

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

git clone http://git.savannah.gnu.org/r/gnuprologjava.git
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,一些构建脚本(例如Mono)有git:// urls烘焙.:( (5认同)

wim*_*ica 7

当您使用Linux时,请参阅此页面.

在窗户上,我已经解决了这个问题;

安装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
Run Code Online (Sandbox Code Playgroud)

(用您自己的代理ip/port替换192.168.100.1和3128)

执行以下行以配置代理:

git config --global core.gitproxy gitproxy.cmd
Run Code Online (Sandbox Code Playgroud)

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

acl SSL_ports port 9418         # git
acl Safe_ports port 9418        # git
Run Code Online (Sandbox Code Playgroud)

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