【问题标题】:How to use git behind a proxy [duplicate]如何在代理后面使用 git [重复]
【发布时间】:2011-07-28 14:30:20
【问题描述】:

我在代理后面使用 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)

【问题讨论】:

标签: git proxy


【解决方案1】:

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

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

【讨论】:

  • 不幸的是,一些构建脚本(例如 Mono)包含 git:// url。:(
  • 或以 https:// 开头
  • 注意:通过 HTTP(s) 无法通过 SSH 密钥进行授权。 :-(
【解决方案2】:

当您使用 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

(将 192.168.100.1 和 3128 替换为您自己的代理 ip/端口)

执行以下行来配置代理:

git config --global core.gitproxy gitproxy.cmd

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

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

(即配置9418端口和代理服务器中的443端口一样)

【讨论】:

  • 仅供参考,如果您从具有 http git 地址的 git 服务器克隆,我可以通过简单地将 http_proxy shell 变量设置为我的代理服务器然后执行 @ 来使用 cygwin 的 git 987654327@。您还可以通过 cygwin 的 setup.exe 安装 wget 并执行 wget www.google.com 来测试 http_proxy 是否正在通过您的代理工作。如果http_proxy 设置正确,该命令将下载文件。
【解决方案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

【讨论】:

    猜你喜欢
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2018-08-01
    • 2011-01-17
    • 1970-01-01
    相关资源
    最近更新 更多