我在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对我没有帮助。
答案 0 :(得分:282)
以下是重写GitHub默认协议的示例:
git config --global url.https://github.com/.insteadOf git://github.com/
答案 1 :(得分:35)
我不知道这个repo工具如何使用Git(如果你可以配置'repo'来使用http协议),但你可以尝试使用url.<base>.insteadOf
配置变量来欺骗它(参见git-config和git-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,反之亦然。