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

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

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


当前回答

如果您已经安装和配置了tsocks或proxychains,则可以

$ tsocks git clone <you_repository>

or

$ proxychains git clone <you_repository>

为了使它更短,我为proxychains创建了一个符号link /usr/bin/p,所以我可以像这样使用它

p git clone <you_repository>

我可以用它来代理任何命令

p <cmd-need-be-proxied>

顺便说一下,proxychains很长一段时间没有更新,你可能想试试proxychians-ng

其他回答

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

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

如果您已经安装和配置了tsocks或proxychains,则可以

$ tsocks git clone <you_repository>

or

$ proxychains git clone <you_repository>

为了使它更短,我为proxychains创建了一个符号link /usr/bin/p,所以我可以像这样使用它

p git clone <you_repository>

我可以用它来代理任何命令

p <cmd-need-be-proxied>

顺便说一下,proxychains很长一段时间没有更新,你可能想试试proxychians-ng

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

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

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

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

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

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

[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

我已经尝试了以上所有的答案,但都不适合我,因为有一个代理密码编码问题。

这个命令起作用了:

git config --global http.proxy http://username@proxy.example.com:PortNumber 

请不要在命令中输入密码。当你尝试连接到任何git repo时,它会动态地询问。