Comment convertir des URL `git:` en URL `http:`


139

Je travaille derrière un proxy http. J'essaye de cloner l'arborescence des sources d'Android en utilisant leur outil "repo".

Cet outil insiste sur l'utilisation des git://URL, même si les http://URL fonctionnent également. Par conséquent, je ne peux pas télécharger la source.

Est-il possible de forcer gità toujours utiliser http?

Edit: mon http_proxy est configuré correctement. Par exemple, cela fonctionne:

git clone http://android.git.kernel.org/platform/manifest.git

Mais ce n'est pas le cas (errno = connexion expirée):

git clone git://android.git.kernel.org/platform/manifest.git

Donc cette réponse ne m'aide pas vraiment.


Réponses:


297

Voici un exemple de réécriture du protocole par défaut pour GitHub:

git config --global url.https://github.com/.insteadOf git://github.com/

Documentation Git pour url.<base>.insteadOf:

git config [--global] url.<base>.insteadOf <other_url>

Toute URL commençant par cette valeur sera réécrite pour commencer, à la place, par <base>. Lorsque plusieurs chaînes de placeOf correspondent à une URL donnée, la correspondance la plus longue est utilisée.


19
aide lorsque le pare-feu bloque le protocole git! :)
Wojtek Turowicz

Puis-je poser une question ici? J'utilisais ceci mais j'ai écrit "heeps" plutôt que "https". Comment puis-je corriger cela? Est-ce que 'git config --global.url. github.com/.insteadOf heeps: //github.com/ 'fonctionne?
Xuxu

1
Astuce: git remote -vmontre immédiatement l'effet insteadOfet les pushInsteadOfconfigurations
Beni Cherniavsky-Paskin

Cela a fonctionné pour moi dans le WiFi public avec le port 22 bloqué. Comment la configuration peut-elle être rétablie par défaut?
yivo

14
Cette réponse l'a presque fait pour moi, sauf que mon référentiel utilisait un git@github.com:...format pour les URL. Cela a fonctionné: git config --global url."https://github.com/".insteadOf 'git@github.com:'pour moi.
kraenhansen

35

Je ne sais pas comment cet outil de dépôt utilise Git (et si vous pouvez configurer 'repo' pour utiliser le protocole http), mais vous pouvez essayer de le tromper en utilisant la url.<base>.insteadOfvariable de configuration (voir les pages de manuel git-config et git-fetch ).

Avez-vous essayé d'utiliser core.gitProxypour passer à travers le pare-feu, si c'est le problème avec l'utilisation du protocole git?


2
Merci, cette variable "insteadOf" est exactement ce dont j'avais besoin.
noamtm

23

J'ai eu le même problème avec l'obtention récursive de sous-modules dans un référentiel git. Je suis derrière un pare-feu fou qui n'autorise pas les connexions sortantes sur le port git. Certains des sous-modules des sous-modules ont été codés comme git://github.com/blah/blah.git. Cela a tué ma population récursive de sous-modules. La solution de contournement est la suivante:

git config --global url."https://<GITUSERNAME>@".insteadOf git://

Cela remplace git://par https://<GITUSERNAME>@dans toutes les URL de référentiel de sous-modules. Vous devez le remplacer <GITUSERNAME>par votre propre nom d'utilisateur git. Notez également que le --globalest obligatoire; l'ajout de cette configuration au répertoire du référentiel de base ne fonctionne pas.


3
N'utilisez pas simplement git config --global url. "Https: //" .insteadOf git: // comme indiqué ici? github.com/angular/angular-phonecat/issues/141 Je veux dire, le nom d'utilisateur est-il obligatoire?
Αλέκος

3

Vous pouvez vérifier ~/.gitconfigsi vous écrasez SSH par https: //, ou vice versa.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.