Если это проблема с вашим брандмауэром, блокирующим порт git: protocol (9418), то вы должны сделать более постоянное изменение, чтобы вам не пришлось забывать выдавать команды, предлагаемые другими постами, для каждого репозитория git.
Приведенное ниже решение также работает только для подмодулей, которые также могут использовать протокол git :.
Поскольку сообщение git на самом деле не указывает сразу на порт 9418, блокирующий брандмауэр, давайте попробуем диагностировать это как реальную проблему.
Диагностика проблемы
Ссылки: https://superuser.com/q/621870/203918 и https://unix.stackexchange.com/q/11756/57414.
Есть несколько инструментов, которые мы можем использовать, чтобы определить, является ли брандмауэр причиной нашей проблемы - используйте тот, который установлен в вашей системе.
# Using nmap
# A state of "filtered" against port 9418 (git) means
# that traffic is being filtered by a firewall
$ nmap github.com -p http,git
Starting Nmap 5.21 ( http://nmap.org ) at 2015-01-21 10:55 ACDT
Nmap scan report for github.com (192.30.252.131)
Host is up (0.24s latency).
PORT STATE SERVICE
80/tcp open http
9418/tcp filtered git
# Using Netcat:
# Returns 0 if the git protocol port IS NOT blocked
# Returns 1 if the git protocol port IS blocked
$ nc github.com 9418 < /dev/null; echo $?
1
# Using CURL
# Returns an exit code of (7) if the git protocol port IS blocked
# Returns no output if the git protocol port IS NOT blocked
$ curl http://github.com:9418
curl: (7) couldn't connect to host
Хорошо, теперь мы определили, что наш порт git заблокирован брандмауэром, что мы можем с этим сделать? Читай дальше :)
Основная перезапись URL
Git предоставляет способ переписать URL с помощью git config
. Просто введите следующую команду:
git config --global url."https://".insteadOf git://
Теперь, как по волшебству, все команды git будут выполнять замену git://
наhttps://
Какие изменения внесла эта команда?
Взгляните на свою глобальную конфигурацию, используя:
git config --list
Вы увидите следующую строку в выводе:
url.https://.insteadof=git://
Вы можете увидеть, как это выглядит в файле, заглянув ~/.gitconfig
туда, где вы должны увидеть, что были добавлены следующие две строки:
[url "https://"]
insteadOf = git://
Хотите больше контроля?
Просто используйте более полный / конкретный URL в замене. Например, чтобы URL-адреса GitHub использовались только для https: // вместо git: //, вы можете использовать что-то вроде:
git config --global url."https://github".insteadOf git://github
Вы можете запустить эту команду несколько раз, используя различные замены. Однако в случае совпадения URL-адреса с несколькими заменами самое длинное совпадение «выигрывает». Для каждого URL будет сделана только одна замена.
Общесистемные изменения для системных администраторов
Если вы системный администратор Linux и не хотите, чтобы ваши пользователи проходили через описанные выше действия, вы можете быстро изменить общесистемную конфигурацию git.
Просто отредактируйте или добавьте следующее содержимое, /etc/gitconfig
и ваши пользователи не должны беспокоиться ни о чем из вышеперечисленного:
[url "https://"]
insteadOf = git://