Ответ 1
Здесь приведен пример перезаписи протокола по умолчанию для GitHub:
git config --global url.https://github.com/.insteadOf git://github.com/
Я работаю за http-прокси. Я пытаюсь клонировать дерево исходных текстов Android с помощью своего инструмента "repo".
Этот инструмент настаивает на использовании URL git://
, даже если URL-адреса http://
также работают. В результате я не могу загрузить исходный код.
Можно ли заставить git
всегда использовать http
?
Изменить: мой http_proxy настроен правильно. Например, это работает:
git clone http://android.git.kernel.org/platform/manifest.git
Но это не так (errno = Connection time out):
git clone git://android.git.kernel.org/platform/manifest.git
Так что этот ответ не помогает мне.
Здесь приведен пример перезаписи протокола по умолчанию для GitHub:
git config --global url.https://github.com/.insteadOf git://github.com/
Я не знаю, как этот инструмент repo использует Git (и если вы можете настроить 'repo' для использования протокола http), но вы можете попытаться обмануть его, используя конфигурационную переменную url.<base>.insteadOf
(см. git-config и git-fetch manpages).
Вы пытались использовать core.gitProxy
для прохождения через брандмауэр, если это проблема с использованием протокола Git?
У меня была та же проблема с рекурсивным получением подмодулей в репозитории git. Я за сумасшедшим брандмауэром, который не позволяет исходящие соединения на порту git. Некоторые подмодули подмодулей были закодированы как git://github.com/blah/blah.git
. Это убило мое рекурсивное население подмодулей. Обходной путь следующий:
git config --global url."https://<GITUSERNAME>@".insteadOf git://
Это заменяет git://
на https://<GITUSERNAME>@
во всех URL-адресах репозитория подмодуля. Вам нужно заменить <GITUSERNAME>
на ваше собственное имя пользователя git. Также обратите внимание, что требуется --global
; просто добавление этой конфигурации в каталог базового репозитория не работает.
Вы можете проверить в ~/.gitconfig
, если вы перезаписываете SSH с помощью https://или наоборот.