如何让git使用代理服务器?
我需要从git服务器检出代码,每次都显示"Request timed out".我该如何解决这个问题?
或者,如何设置代理服务器?
要使用的命令:
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
更改proxyuser
为您的代理用户
更改proxypwd
为您的代理密码
更改proxy.server.com
为代理服务器的URL
更改8080
为代理服务器上配置的代理端口
如果您决定随时重置此代理并在没有代理的情况下工作:
要使用的命令:
git config --global --unset http.proxy
最后,检查当前设置的代理:
git config --global --get http.proxy
这对我来说很有用,在公司防火墙后面的Windows XP中.
我没有必要从http://code.google.com/p/msysgit/downloads/list?can=3安装除git v1.771之外的任何本地代理或任何其他软件
$ git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080 $ git config --system http.sslcainfo /bin/curl-ca-bundle.crt $ git remote add origin https://mygithubuser:mygithubpwd@github.com/repoUser/repoName.git $ git push origin master
proxyuser =我的IT部门分配的代理用户,在我的情况下,它是我用来登录我的PC的同一个Windows用户,即Active Directory用户
proxypwd =我的代理用户的密码
proxy.server.com:8080 =代理名称和端口,我从控制面板,Internet选项,连接,Lan设置按钮,代理服务器部分内的高级按钮获取它,使用第一行(http)行上的服务器名称和端口.
mygithubuser =我用来登录github.com的用户
mygithubpwd =我的github.com用户的密码
repoUser =回购的用户所有者
repoName =回购的名称
设置一个名为http_proxy
值为的系统变量ProxyServer:Port
.这是最简单的解决方案.分别https_proxy
在评论中指出使用daefu.
设置gitproxy(作为sleske提及)是另一种选择,但这需要一个"命令",这不像上面的解决方案那么简单.
参考文献:http: //bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html
如果配置代理服务器的命令行方式不起作用,您可以只编辑.gitconfig(在配置文件的根目录中,这可能隐藏在C:\ Documents and Settings和某些网络驱动器上)并添加此:
[http] proxy = http://username:password@proxy.at.your.org:8080
但是,YMMV仅涵盖了命令行配置的第一步.您可能还需要编辑系统git配置,我不知道它们隐藏在哪里.
作为使用的替代方法git config --global http.proxy address:port
,您可以在命令行上设置代理:
git -c "http.proxy=address:port" clone https://...
优点是代理不是持久设置的.在Bash下你可以设置一个别名:
alias git-proxy='git -c "http.proxy=address:port"'
如果您使用的是ubuntu,请执行以下操作...
第1步:安装开瓶器
$ sudo apt-get install corkscrew
第2步:编写名为git-proxy.sh的脚本并添加以下内容
#!/bin/sh exec corkscrew$* # and are the ip address and port of the server # e.g. exec corkscrew 192.168.0.1 808 $*
第3步:使脚本可执行
$ chmod +x git-proxy.sh
步骤4:通过设置环境变量为GIT设置代理命令
$ export GIT_PROXY_COMMAND="//git-proxy.sh"
现在使用git命令,例如
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
由于.gitconfig
Windows中有多个文件,因此面临同样的问题,按照以下步骤进行修复:
第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
尝试将以下内容放到〜/ .gitconfig文件中:
[http] proxy = http://proxy:8080 [https] proxy = http://proxy:8080 [url "https://"] insteadOf = git://
对于git协议(git:// ...),安装socat并编写如下脚本:
#!/bin/sh exec socat - socks4:your.company.com:$1:$2
使其可执行,将其放在您的路径中,并在您的~/.gitconfig
设置core.gitproxy
中添加该脚本的名称.
我发现了一些要分享的内容:
git config --global http.proxy http://:
上面的方法不适用于ssh网址(即git@github.com:
):
git clone git@github.com:/ .git // will not use the http proxy
如果我们通过HTTPS端口(https://help.github.com/en/articles/using-ssh-over-the-https-port)设置SSH,事情不会改变,因为它只会更改端口(默认为22) )ssh连接连接到。
(不是讲英语的人,请在必要时细化我的语言)
除了这些答案,我发现有助于考虑以下两点:
可能需要强制执行身份验证方案:
[http] # https://github.com/git/git/blob/master/Documentation/config.txt proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm
此外,通常使用NTLM身份验证架构,可能需要明确地提供AD域.
在git bash中:
echo %userdomain%
并相应地更新http.proxy:
git config --global http.proxy http://DOMAIN\\proxyuser:proxypwd@proxy.server.com:8080
无论如何,通过添加CURL日志可以帮助调查:
export GIT_CURL_VERBOSE=1
我在工作中(state / gov)在Windows XP上工作,因此我进行了研究,并在这里找到了它,它很适合我。希望这可以帮助 :)
http_proxy环境变量
如果使用代理服务器或防火墙,则可能需要设置http_proxy环境变量,以便从命令行访问某些URL。示例:在Linux上安装ppm for perl或应用rpm,更新ubuntu
使用代理服务器的主机名或IP地址设置http_proxy变量:http_proxy = http:// [proxy.example.org]
如果代理服务器需要用户名和密码,请以以下形式包括它们:http_proxy = http:// [username:password@proxy.example.org]
如果代理服务器使用的端口不是80,则包括以下端口号:http_proxy = http:// [username:password@proxy.example.org:8080]
Windows XP
打开控制面板,然后单击系统图标。
在“高级”选项卡上,单击“环境变量”。
在“系统变量”面板中单击“新建”。
添加带有适当代理信息的http_proxy(请参见上面的示例)。
Linux,Solaris或HP-UX
使用特定于您的Shell的命令(例如set或export)设置http_proxy环境变量。要使更改永久生效,请将命令添加到外壳程序的相应配置文件中。例如,在bash中,将以下内容添加到.bash_profile或.bashrc文件中:
http_proxy = http:// [用户名:密码@主机名:端口];
导出$ http_proxy
如果你的tsocks或proxychains安装和配置,你可以
$ tsocks git clone
要么
$ proxychains git clone
使其更短,我创建了一个符号链接/usr/bin/p
的proxychains
,这样我就可以使用它像这样
p git clone
我可以用它来代理任何命令,
p
顺便说一句,proxychains长时间未更新,您可能想尝试proxychians-ng