Если это проблема с вашим брандмауэром, блокирующим порт протокола git: (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://