我如何通过HTTP代理从Git存储库中获取?
注意:虽然所描述的用例是关于在项目中使用子模块的,但这同样适用于基于HTTP的存储库的正常git clone
。
我有一个Git控件下的项目。 我想添加一个子模块:
git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu
但我明白了
...
got 1b0313f016d98e556396c91d08127c59722762d0
got 4c42d44a9221209293e5f3eb7e662a1571b09421
got b0d6414e3ca5c2fb4b95b7712c7edbf7d2becac7
error: Unable to find abc07fcf79aebed56497e3894c6c3c06046f913a under http://github.com/jscruggs/metri...
Cannot obtain needed commit abc07fcf79aebed56497e3894c6c3c06046f913a
while processing commit ee576543b3a0820cc966cc10cc41e6ffb3415658.
fatal: Fetch failed.
Clone of 'http://github.com/jscruggs/metric_fu.git' into submodule path 'vendor/plugins/metric_fu'
我有我的HTTP_PROXY设置:
c:project> echo %HTTP_PROXY%
http://proxy.mycompany:80
我甚至有一个全球Git设置为http代理:
c:project> git config --get http.proxy
http://proxy.mycompany:80
有没有人获得HTTP提取一贯通过代理工作? 真奇怪的是GitHub上的一些项目工作正常(例如awesome_nested_set
),但其他项目一直失败(例如rails)。
您还可以设置Git在全局配置属性http.proxy
使用的HTTP代理:
git config --global http.proxy http://proxy.mycompany:80
这已经有一些很好的答案了。 但是,我认为我会打入一些代理服务器要求您使用用户标识和密码进行身份验证。 有时候这可以在一个域上。
因此,例如,如果您的代理服务器配置如下所示:
Server: myproxyserver
Port: 8080
Username: mydomainmyusername
Password: mypassword
然后,使用以下命令添加到.gitconfig
文件中:
git config --global http.proxy http://mydomainmyusername:mypassword@myproxyserver:8080
不要担心https
。 只要指定的代理服务器支持http和https,那么配置文件中的一项就足够了。
然后,您可以通过执行cat .gitconfig
来验证该命令是否已成功将条目添加到.gitconfig
文件中:
在文件末尾,您将看到如下所示的条目:
[http]
proxy = http://mydomainmyusername:mypassword@myproxyserver:8080
而已!
最后的工作是设置http_proxy
环境变量。 我已经正确设置了HTTP_PROXY
,但git显然更喜欢小写版本。
上一篇: How do I pull from a Git repository through an HTTP proxy?