Tenter quelque chose comme git clone git://github.com/ry/node.git
ne fonctionnera pas, cela se traduit par:
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 via HTTP fonctionne correctement. Jusqu'à présent, j'ai compris que c'était 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. Existe-t-il un moyen de changer le fonctionnement de cette commande ou quelque chose?
git config --global url.https://.insteadOf git://
Réponses:
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.
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: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:
Vous verrez la ligne suivante dans la sortie:
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: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:
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:la source
git config --global url."https://github".insteadOf git://github
.git config --global --unset url."https://".insteadOf
Github fournit également un accès http (s), qui est beaucoup moins susceptible d'être bloqué par votre entreprise. Pour dire au sous-module d'utiliser cela, vous pouvez faire ceci:
C'est en fait exactement pourquoi init et update sont des commandes séparées - vous pouvez initier, personnaliser les emplacements, puis mettre à jour.
update --init
est juste un raccourci lorsque vous n'avez pas besoin de personnaliser d'URL.Pour toute autre personne qui rencontre cela, vous pouvez bien sûr également utiliser une URL ssh (si votre entreprise bloque git: // mais pas ssh), mais dans ce cas, l'OP n'a probablement pas d'accès SSH au dépôt distant.
la source
sed -i 's@git://github@https://github@' .git/config
.Une autre option qui n'implique pas de toucher git config est de changer les paramètres ssh pour utiliser le port 443 au lieu du port 22 normal.
Référence: Utilisation de SSH sur le port HTTPS
De cet article:
Ensuite, j'ai pu réussir à git push sur Github. À la maison, vous pouvez revenir à la configuration ssh telle qu'elle était si vous le souhaitez.
la source
J'avais aussi le même problème pendant un certain temps. Ensuite, j'ai essayé de changer la configuration de git en utilisant la commande suggérée:
qui malheureusement n'a pas fait l'affaire pour moi . J'avais toujours le même problème!
Ce qui a finalement résolu mon problème, c'est que j'ai réinitialisé à nouveau l'URL distante de mon référentiel à l'aide de la commande suivante:
qui était auparavant comme ceci:
Après avoir défini l'URL distante à la
https://
place,[email protected]
le problème a été résolu pour moi.la source
En développant la réponse de Nathan ci-dessus, vous pouvez également essayer le protocole ssh si votre pare-feu d'entreprise interfère avec https. Dans mon cas, le pare-feu bloquait le protocole git, réémettait des certificats ssl pour https et cela cassait le bower pour moi, même avec l'option strict-ssl désactivée. Vous pouvez faire une réécriture d'url similaire pour ssh et créer une clé / paire ssh comme décrit sur github .
Vous devrez également activer l'agent ssh pour votre installation git.
la source
c'est parce que l'adresse GIT du serveur de nœuds a changé que vous devez saisir maintenant:
git clone https://github.com/joyent/node
bonne chance
la source
introduction
J'ajouterai ici ma propre approche ( ce qui n'est pas obligatoire si vous avez un référentiel git accessible au public qui prend en charge https ).
Je travaille dans une entreprise où le référentiel git n'est accessible que de l'intérieur de l'entreprise. Mais je travaille aussi à domicile.
Comment puis-je pousser vers le référentiel de l'entreprise depuis chez moi?
J'ai créé un référentiel avec un dossier sur mon lecteur Google. À l'exception de git et https, vous pouvez inclure des référentiels en tant que chemins.
Donc, au lieu de pousser vers l'origine, je pousse sur "gDrive". Cela provoque la synchronisation du dossier de ma station de travail domestique vers Google Drive, puis mon ordinateur de travail extrait les modifications. De plus, comme parfois les fichiers du répertoire ".git" ne se synchronisent pas, je renomme temporairement le dossier de "trunk" par exemple à "trunk2". Cela oblige les ordinateurs personnels et professionnels à être synchronisés à 100% avec Google Drive.
Je me connecte ensuite à mon ordinateur de travail via checkpoint-vpn remote (ou teamviewer) et je pousse mes mises à jour vers le référentiel de travail git.
De plus, le processus fonctionnerait vice-versa pour pousser vers un référentiel git en dehors de l'entreprise qui est bloqué.
la source