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

时间:2009-11-12 15:00:24

标签: git proxy

我在http代理后面工作。我正在尝试使用他们的“repo”工具克隆Android的源代码树。

此工具坚持使用git://网址,即使http://网址也有效。因此,我无法下载源代码。

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

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

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

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

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

所以this answer对我没有帮助。

4 个答案:

答案 0 :(得分:282)

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

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

答案 1 :(得分:35)

我不知道这个repo工具如何使用Git(如果你可以配置'repo'来使用http协议),但你可以尝试使用url.<base>.insteadOf配置变量来欺骗它(参见git-configgit-fetch联机帮助页。)

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

答案 2 :(得分:22)

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

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

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

答案 3 :(得分:3)

您可以在~/.gitconfig验证您是否使用https://覆盖SSH,反之亦然。

相关问题