让git与代理服务器一起工作
如何让git使用代理服务器?
我需要从git服务器检查代码,它每次显示“请求超时”。 我如何解决这个问题?
另外,我怎样才能设置代理服务器?
使用命令:
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
- 将
proxyuser
更改为您的代理用户 - 将
proxypwd
更改为您的代理密码 - 将
proxy.server.com
更改为您的代理服务器的URL - 将
8080
更改为代理服务器上configuration的代理端口
如果您决定随时重置此代理并在没有代理的情况下工作:
使用命令:
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部门分配的,在我的情况下,它与我用来login我的PC的Active Directory用户
proxypwd =我的代理用户的密码
proxy.server.com:8080 =代理服务器的名称和端口,我从控制面板,Internet选项,连接,局域网设置button,代理服务器部分内的高级button,使用第一个(http)行的服务器名称和端口。
mygithubuser =我用来login到github.com的用户
mygithubpwd =我的github.com用户的密码
repoUser =回购的用户所有者
repoName =回购的名称
设置一个名为http_proxy
的系统variables,其值为ProxyServer:Port
。 这是最简单的解决scheme。 分别使用https_proxy
作为daefu在评论中指出的。
设置gitproxy(与sleske提到的一样)是另一种select,但是这需要一个“命令”,这不像上述解决scheme那样简单。
参考文献: http : //bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html
如果configuration代理服务器的命令行方式不起作用,那么可以编辑.gitconfig(在configuration文件的根目录中,这可能会同时隐藏在C:\ Documents and Settings和一些networking驱动器中)并添加:
[http] proxy = http://username:password@proxy.at.your.org:8080
但是,YMMV只包含命令行configuration的第一步。 你可能也必须编辑系统的gitconfiguration,我不知道他们把它藏在哪里。
如果您使用的是Ubuntu,请执行以下操作…
第1步:安装开瓶器
$ sudo apt-get install corkscrew
第2步:编写一个名为git-proxy.sh的脚本并添加以下内容
#!/bin/sh exec corkscrew <name of proxy server> <port> $* # <name_of_proxy_server> and <port> are the ip address and port of the server # eg exec corkscrew 192.168.0.1 808 $*
第3步:使脚本可执行
$ chmod +x git-proxy.sh
步骤4:通过设置环境variables来设置GIT的代理命令
$ export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"
现在使用git命令,比如
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.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"'
对于git协议(git:// …),安装socat并编写脚本,例如:
#!/bin/sh exec socat - socks4:your.company.com:$1:$2
使其可执行,把它放在你的path,并在~/.gitconfig
设置core.gitproxy
为该脚本的名称。
尝试把下面的文件放到〜/ .gitconfig文件中:
[http] proxy = http://proxy:8080 [https] proxy = http://proxy:8080 [url "https://"] insteadOf = git://
我在工作(州/政府)在Windows XP上工作,所以我做了我的研究,发现这里 ,它为我工作。 希望这可以帮助 :)
http_proxy环境variables
如果您使用代理服务器或防火墙,则可能需要设置http_proxy环境variables才能从命令行访问某个url。 例子:在perl上安装ppm或者在linux上应用rpm,更新ubuntu
使用代理服务器的主机名或IP地址设置http_proxyvariables: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
- 打开控制面板,然后单击系统图标。
- 在高级选项卡上,单击环境variables。
- 在系统variables面板中单击新build。
- 用适当的代理信息添加http_proxy(见上面的例子)。
Linux,Solaris或HP-UX
设置http_proxy环境variables使用特定于您的shell的命令(例如设置或导出)。 要使此更改持久化,请将该命令添加到适当的shell的configuration文件中。 例如,在bash中,向你的.bash_profile或.bashrc文件添加如下所示的行:
- http_proxy = http:// [用户名:密码@主机名:端口];
- 导出$ http_proxy
面对同样的问题,因为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
在terminal上设置git代理
如果
- 你不需要手动设置每个git项目的代理,一个接一个
- 总是希望对所有项目使用相同的代理
全局设置一次
git config --global http.proxy username:password@proxy_url:proxy_port git config --global https.proxy username:password@proxy_url:proxy_port
如果你只想为一个git项目设置代理(可能有一些情况下,你可能不希望使用相同的代理或任何代理的一些git连接)
//go to project root cd /bla_bla/project_root //set proxy for both http and https git config http.proxy username:password@proxy_url:proxy_port git config https.proxy username:password@proxy_url:proxy_port
如果你想显示当前的代理设置
git config --list
如果你想全球删除代理
git config --global --unset http.proxy git config --global --unset https.proxy
如果你想删除代理只有一个Git根
//go to project root cd /bla-bla/project_root git config --unset http.proxy git config --unset https.proxy
如果您安装并configuration了tsocks或代理链 ,则可以
$ tsocks git clone <you_repository>
要么
$ proxychains git clone <you_repository>
对于Windows用户:如果git config
或set http_proxy=
不起作用, 这个答案可能有所帮助:
用http://
replacegit仓库的git://
协议。 注意,你必须首先设置http_proxy
。