185 votes

git: // protocole bloqué par l'entreprise, comment puis-je contourner cela?

Essayer quelque chose comme git clone git://github.com/ry/node.git ne fonctionnera pas, il en résulte:

 Initialized empty Git repository in /home/robert/node/.git/
github.com[0: 207.97.227.239]: errno=Connection timed out
fatal: unable to connect a socket (Connection timed out)
 

Cependant, le clonage sur HTTP fonctionne bien. Jusqu'à présent, j'ai compris que c'est un problème avec le protocole, mais j'essaie d'installer cloud9 qui nécessite la commande

git submodule update --init --recursive

qui essaie d'utiliser le protocole git: // et échoue. Y at-il un moyen de changer comment cette commande va fonctionner ou quelque chose?

423voto

Si c'est un problème avec votre pare-feu bloque le git: port de protocole (9418), alors vous devriez faire un plus de changement persistant, de sorte que vous n'avez pas à penser à émettre des commandes suggérées par d'autres postes pour chaque repo git.

Ci-dessous la solution fonctionne pour les submodules ce qui pourrait également être à l'aide de git: protocole.

De base de la Réécriture d'URL

Git fournit un moyen de réécriture d'Url à l'aide de git config. Simplement la commande suivante:

git config --global url."https://".insteadOf git://

Maintenant, comme par magie, toutes les commandes git va effectuer une substitution de l' git:// de https://

Quels Changements A Fait Cette Commande?

Jetez un oeil à votre configuration globale de l'aide:

git config --list

Vous verrez la ligne suivante dans la sortie:

url.https://.insteadof=git://

Vous pouvez voir à quoi cela ressemble sur fichier, en prenant un coup d'oeil à l' ~/.gitconfig où vous devriez maintenant voir que les deux lignes suivantes ont été ajoutées:

[url "https://"]
    insteadOf = git://

Voulez Plus De Contrôle?

Il suffit d'utiliser une plus complète/URL spécifique dans le remplacement. Par exemple, pour seulement GitHub Url utiliser 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. Toutefois, dans le cas où une URL correspond à plusieurs remplacements, le plus long match "gagne". Un seul de remplacement sera effectué par URL.

29voto

Jefromi Points 127932

Github fournit http(s) d'accès, ce qui est beaucoup moins susceptible d'être bloqué par votre entreprise. À dire le sous-module pour l'utiliser, vous pouvez faire ceci:

git submodule init
git config submodule.<name>.url https://github.com/...
git submodule update

C'est en fait exactement pourquoi d'initialisation et de mise à jour sont pour séparer les commandes - vous pouvez init, de personnaliser les lieux, puis mise à jour. update --init est juste un raccourci pour quand vous n'ot besoin de personnaliser les Url.

Pour quelqu'un d'autre qui se passe à travers cela, vous pouvez bien sûr également utiliser une URL ssh (si votre entreprise blocs git:// mais pas ssh), mais dans ce cas, les OP sans doute de ne pas disposer d'un accès SSH à distance des pensions.

6voto

Keen Learner Points 1054

J'ai été aussi le même problème pendant un certain temps. Ensuite, j'ai essayé de changer le git config à l'aide de l'suggéré de commande:

git config --global url."https://".insteadOf git://

qui, malheureusement, n'a pas à faire le truc pour moi. J'étais toujours le même problème!

Ce qui s'est réellement résolu mon problème est enfin, j'ai réinitialiser la télécommande à l'url de mon référentiel de nouveau à l'aide de la commande suivante:

git remote set-url origin https://github.com/<my_user_name>/<my_repo_name>.git

qui a été précédemment comme ceci:

git remote set-url origin git@github.com:<my_user_name>/<my_repo_name>.git

Après le réglage de la distance url à l'aide d' https:// au lieu de git@git.com le problème a été résolu pour moi. Espérons que cela aide quelqu'un qui se fait dans le même problème que le mien.

2voto

jhiller Points 21

L'expansion sur de Nathan réponse ci-dessus, vous pouvez aussi essayer le protocole ssh si votre pare-feu d'entreprise est d'interférer avec le protocole https. Dans mon cas, le pare-feu était blocage de protocole git, re-délivrance de certificats ssl pour https et c'était en rupture de verdure pour moi, même avec le strict ssl option désactivée. Vous pouvez faire un similaires de réécriture d'url pour le ssh, et de créer une clé ssh/paire comme décrit sur github.

 git config --global url."ssh://git@github.com".insteadOf git://github.com

Vous devez également avoir à activer le ssh-agent pour votre git installer.

1voto

fmo Points 29

C’est parce que l’adresse GIT pour le nœud du serveur a changé vous devez entrer maintenant :

git clone https://github.com/joyent/node

Bonne chance

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X