如何让Git使用代理服务器?

我需要从Git服务器签出代码,但它每次都显示“请求超时”。我该怎么解决这个问题呢?

或者如何设置代理服务器?


当前回答

在不知疲倦地尝试这个页面上的每个解决方案后,我的工作是使用SSH密钥代替!

打开Git Bash ssh-keygen.exe -t rsa -C 打开你的Git提供商(Github, Bitbucket等) 添加复制id_rsa。pub文件内容到Git提供者的输入页面(检查您的配置文件)

其他回答

作为使用git配置的替代方案——global http。代理地址:端口,可以在命令行设置代理:

git -c "http.proxy=address:port" clone https://...

优点是代理不需要持久设置。在Bash下你可以设置一个别名:

alias git-proxy='git -c "http.proxy=address:port"'

我在公司使用Windows XP,所以我做了我的研究,在这里发现了这个,它对我有用。希望这对你有所帮助。

http_proxy环境变量

如果您使用代理服务器或防火墙,您可能需要设置http_proxy环境变量以便从命令行访问一些url。 例如:为perl安装ppm或在linux中应用rpm,更新ubuntu

将http_proxy变量设置为代理服务器的主机名或IP地址: http_proxy = http:// [proxy.example.org]

如果代理服务器需要用户名和密码,请以以下形式填写: http_proxy = http://(用户名:password@proxy.example.org)

如果代理服务器使用的端口号不是80,请填写端口号: http_proxy = http://(用户名:password@proxy.example.org: 8080)

Windows XP

打开控制面板并单击系统图标。 在“高级”选项卡上,单击“环境变量”。 单击“系统变量”面板中的“新建”。 添加带有适当代理信息的http_proxy(参见上面的示例)。

Linux、Solaris或HP-UX

使用特定于shell的命令(例如Set或export)设置http_proxy环境变量。要使此更改持久,请将该命令添加到shell的适当概要文件中。例如,在bash中,在.bash_profile或.bashrc文件中添加如下一行:

http_proxy = http://(用户名:password@hostname:端口); 出口美元http_proxy

对于git协议(git://…),安装socat并编写如下脚本:

#!/bin/sh

exec socat - socks4:your.company.com:$1:$2

使其可执行,将其放在您的路径和~/中。Gitconfig set core。Gitproxy到该脚本的名称。

除了这些答案,我发现考虑以下两点很有帮助:

可能需要强制一个身份验证方案:

[http]
    # https://github.com/git/git/blob/master/Documentation/config.txt
    proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm

此外,通常使用NTLM身份验证模式时,可能需要显式地提供AD域。

在git bash中:

echo %userdomain%

并更新http。相应的代理:

git config --global http.proxy http://DOMAIN\\proxyuser:proxypwd@proxy.server.com:8080

无论如何,添加CURL日志可能有助于调查:

export GIT_CURL_VERBOSE=1

因为在windows中有多个.gitconfig文件而面临同样的问题,遵循以下步骤来修复相同的问题:

步骤1:打开Git BASH

步骤2:查找.gitconfig,执行以下命令:

git config --list --global --show-origin

步骤3:在.gitconfig中复制以下内容:

[http]
    proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
    sslverify = false
[https]
    proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
    sslverify = false
[url "http://github.com/"]
    insteadOf = git://github.com/

[user]
    name = Arpit Aggarwal
    email = aggarwalarpit.89@gmail.com