如何让Git使用代理服务器?
我需要从Git服务器签出代码,但它每次都显示“请求超时”。我该怎么解决这个问题呢?
或者如何设置代理服务器?
如何让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时,它会动态地询问。