Jeśli jest to problem z zaporą blokującą port protokołu git: (9418), powinieneś wprowadzić bardziej trwałą zmianę, abyś nie musiał pamiętać o wydawaniu poleceń sugerowanych przez inne posty dla każdego repozytorium git.
Poniższe rozwiązanie działa również dla podmodułów, które mogą również korzystać z protokołu git:.
Ponieważ komunikat git tak naprawdę nie wskazuje natychmiast na port 9418 blokujący zaporę, spróbujmy zdiagnozować to jako rzeczywisty problem.
Diagnozowanie problemu
Odnośniki: https://superuser.com/q/621870/203918 i https://unix.stackexchange.com/q/11756/57414
Istnieje kilka narzędzi, których możemy użyć do ustalenia, czy zapora sieciowa powoduje nasz problem - użyj tego, które jest zainstalowane w twoim systemie.
# 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
OK, teraz ustaliliśmy, że nasz port git jest blokowany przez zaporę ogniową. Co możemy z tym zrobić? Czytaj :)
Podstawowe przepisywanie adresów URL
Git zapewnia sposób na przepisywanie adresów URL za pomocą git config
. Wystarczy wydać następujące polecenie:
git config --global url."https://".insteadOf git://
Teraz, jak za pomocą magii, wszystkie polecenia git wykonają zamianę git://
nahttps://
Jakie zmiany wprowadziło to polecenie?
Spójrz na swoją globalną konfigurację, używając:
git config --list
W wyniku zobaczysz następujący wiersz:
url.https://.insteadof=git://
Możesz zobaczyć, jak to wygląda w pliku, sprawdzając, ~/.gitconfig
gdzie powinieneś teraz zobaczyć, że dodano następujące dwie linie:
[url "https://"]
insteadOf = git://
Chcesz więcej kontroli?
Po prostu użyj bardziej kompletnego / konkretnego adresu URL w zamianie. Na przykład, aby tylko adresy URL GitHub używały https: // zamiast git: //, możesz użyć czegoś takiego:
git config --global url."https://github".insteadOf git://github
Możesz uruchomić to polecenie wiele razy, używając różnych zamienników. Jednak w przypadku, gdy adres URL pasuje do wielu zamienników, najdłuższe dopasowanie „wygrywa”. Tylko jeden zamiennik zostanie wykonany na adres URL.
Systemowe zmiany dla Sysadmins
Jeśli jesteś Linux Sysadmin i nie chcesz, aby użytkownicy musieli przejść przez powyższe problemy, możesz dokonać szybkiej zmiany konfiguracji git w całym systemie.
Po prostu edytuj lub dodaj następującą treść, aby /etc/gitconfig
użytkownicy nie musieli się martwić o żadne z powyższych:
[url "https://"]
insteadOf = git://