如何通过HTTP代理从Git存储库中提取?
时间:2020-03-06 14:40:19 来源:igfitidea点击:
注意:虽然所描述的用例是关于在项目中使用子模块的,但是这同样适用于通过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
我什至为http代理设置了一个全局Git设置:
c:\project> git config --get http.proxy http://proxy.mycompany:80
有没有人获取过HTTP抓取以通过代理持续工作?真正奇怪的是,GitHub上的一些项目运行良好(例如,awesome_nested_set
),但是其他项目却始终失败(例如,rails)。
解决方案
看来我们在Windows上使用的是gitw的mingw编译器(或者可能是我未曾听说过的另一种)。有很多方法可以调试:我相信git的所有HTTP代理工作都是由curl完成的。在运行git之前设置以下环境变量:
GIT_CURL_VERBOSE=1
这至少应该使我们对幕后发生的事情有所了解。
这不是代理的问题。 github(或者git)有问题。对于我来说,在Linux上的git-1.6.0.1上也失败了。已报告了错误(不少于我们)。
确保删除馅饼,它们已经在Google上了。编辑:一定在做梦,我想你不能删除它们。改用Gist吗?
最终起作用的是设置http_proxy
环境变量。我已经正确设置了HTTP_PROXY,但是git显然更喜欢小写版本。
我们还可以在全局配置属性" http.proxy"中设置Git使用的HTTP代理:
git config --global http.proxy http://proxy.mycompany:80