S'il s'agit d'un problème avec votre pare-feu bloquant le port git: protocol (9418), vous devriez alors apporter une modification plus persistante afin de ne pas avoir à vous rappeler d'émettre les commandes suggérées par d'autres articles pour chaque dépôt git.
La solution ci-dessous fonctionne également uniquement pour les sous-modules qui pourraient également utiliser le protocole git :.
Puisque le message git ne pointe pas vraiment immédiatement vers le port de blocage du pare-feu 9418, essayons de diagnostiquer cela comme le problème réel.
Diagnostiquer le problème
Références: https://superuser.com/q/621870/203918 et https://unix.stackexchange.com/q/11756/57414
Il existe plusieurs outils que nous pouvons utiliser pour déterminer si le pare-feu est à l'origine de notre problème - utilisez celui qui est installé sur votre système.
# 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, maintenant nous avons déterminé que notre port git était bloqué par un pare-feu, que pouvons-nous faire? Continuer à lire :)
Réécriture d'URL de base
Git fournit un moyen de réécrire les URL à l'aide de git config
. Exécutez simplement la commande suivante:
git config --global url."https://".insteadOf git://
Maintenant, comme par magie, toutes les commandes git effectueront une substitution de git://
tohttps://
Quels changements cette commande a-t-elle apportés?
Jetez un œil à votre configuration globale en utilisant:
git config --list
Vous verrez la ligne suivante dans la sortie:
url.https://.insteadof=git://
Vous pouvez voir à quoi cela ressemble sur fichier, en jetant un coup d'œil à l' ~/.gitconfig
endroit où vous devriez maintenant voir que les deux lignes suivantes ont été ajoutées:
[url "https://"]
insteadOf = git://
Vous voulez plus de contrôle?
Utilisez simplement une URL plus complète / spécifique dans le remplacement. Par exemple, pour que seules les URL GitHub utilisent https: // au lieu de git: //, vous pouvez utiliser quelque chose comme:
git config --global url."https://github".insteadOf git://github
Vous pouvez exécuter cette commande plusieurs fois en utilisant différents remplacements. Cependant, dans le cas où une URL correspond à plusieurs remplacements, la correspondance la plus longue "l'emporte". Un seul remplacement sera effectué par URL.
Modifications à l'échelle du système pour les administrateurs système
Si vous êtes un administrateur système Linux et que vous ne voulez pas que vos utilisateurs aient à subir les difficultés ci-dessus, vous pouvez effectuer un changement rapide de configuration git à l'échelle du système.
Modifiez ou ajoutez simplement le contenu suivant /etc/gitconfig
et voila vos utilisateurs n'ont pas à se soucier de tout ce qui précède:
[url "https://"]
insteadOf = git://