如何将`git:`url转换为`http:`url

我正在工作在一个http代理。 我试图用他们的“回购”工具来克隆Android的源代码树。

这个工具坚持使用git://url,即使http://url也可以。 因此,我无法下载源代码。

有没有可能强制git始终使用http

编辑:我的http_proxyconfiguration正确。 例如,这工作:

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

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

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

所以这个答案并不能真正帮助我。

下面是一个重写GitHub默认协议的例子:

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

我不知道这个回购工具如何使用Git(如果你可以configuration'repo'来使用http协议),但你可以尝试使用url.<base>.insteadOf欺骗它url.<base>.insteadOfconfigurationvariables(请参阅git-config和git -fetch manpages)。

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

我在recursion获取git仓库中的子模块时遇到了同样的问题。 我背后是一个疯狂的防火墙,不允许在git端口上传出连接。 子模块的一些子模块被编码为git://github.com/blah/blah.git 。 这使我的recursion子模块的人口死亡。 解决方法如下:

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

这将在所有子模块存储库URL中用https://<GITUSERNAME>@replacegit:// 。 您需要用您自己的git用户名replace<GITUSERNAME> 。 还要注意 – – --global是必需的; 只是将此configuration添加到基本存储库目录不起作用。

如果您使用https://覆盖SSH,则可以在~/.gitconfig进行validation,反之亦然。