如何将`git:`网址转换为`http:`网址


139

我正在使用http代理。我正在尝试使用其“回购”工具克隆Android的源代码树。

git://即使http://URL也可以使用,该工具仍坚持使用URL 。结果,我无法下载源代码。

是否可以强制git始终使用http

编辑:我的http_proxy配置正确。例如,这有效:

git clone http://android.git.kernel.org/platform/manifest.git

但这不是(errno =连接超时):

git clone git://android.git.kernel.org/platform/manifest.git

因此,这个答案并没有真正帮助我。


Answers:


297

这是重写GitHub的默认协议的示例:

git config --global url.https://github.com/.insteadOf git://github.com/

Git文档url.<base>.insteadOf

git config [--global] url.<base>.insteadOf <other_url>

以该值开头的所有URL都将改写为以开头<base>。如果有多个notOfOf字符串与给定URL匹配,则使用最长的匹配项。


19
当防火墙阻止git协议时会有所帮助!:)
Wojtek Turowicz

我可以在这里问一个问题吗?我正在使用它,但是写了“ heeps”而不是“ https”。我该如何纠正?是否'git config --global.url。github.com/.insteadOf heeps://github.com/'的工作?
徐x

1
提示:git remote -v立即显示的效果insteadOfpushInsteadOfCONFIGS
贝尼切尔尼亚夫斯基-帕斯金

这对我来说在22端口受阻的公共WiFi中起作用。如何将配置恢复为默认值?
yivo

14
这个答案几乎对我来说是成功的,除了我的存储库使用的git@github.com:...是URL格式。这有效:git config --global url."https://github.com/".insteadOf 'git@github.com:'对我来说。
kraenhansen

35

我不知道此repo工具如何使用Git(以及是否可以将'repo'配置为使用http协议),但是您可以尝试使用url.<base>.insteadOf配置变量来欺骗它(请参阅git-configgit-fetch联机帮助页)。

core.gitProxy如果使用git协议存在问题,您是否尝试过通过防火墙?


2
谢谢,这个“ insteadOf”变量正是我需要的。
noamtm

23

我在递归获取git存储库中的子模块时遇到了同样的问题。我在一个疯狂的防火墙后面,该防火墙不允许git端口上的传出连接。子模块中的某些子模块编码为git://github.com/blah/blah.git。这杀死了我递归的子模块。解决方法如下:

git config --global url."https://<GITUSERNAME>@".insteadOf git://

在所有子模块存储库URL中将替换git://https://<GITUSERNAME>@。您需要<GITUSERNAME>用自己的git用户名替换。另请注意,--global必填;仅将此配置添加到基本存储库目录是行不通的。


3
您不仅可以使用git config --global url。“ https://” .insteadOf git://如下所示? github.com/angular/angular-phonecat/issues/141 我的意思是用户名是强制性的吗?
Αλέκος

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.