Якщо це проблема з тим, що ваш брандмауер блокує порт git: протокол (9418), тоді вам слід зробити більш стійкі зміни, щоб вам не потрібно було пам'ятати, щоб видавати команди, запропоновані іншими повідомленнями для кожного git repo.
Наведене нижче рішення також просто працює для підмодулів, які також можуть використовувати протокол 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 Sysadmin і не хочете, щоб ваші користувачі переживали вищевказані болі, ви можете швидко змінити конфігурацію git у всій системі.
Просто відредагуйте або додайте наступний вміст /etc/gitconfig
і переконайтеся, що ваші користувачі не повинні турбуватися ні про що з перерахованого вище:
[url "https://"]
insteadOf = git://