So konvertieren Sie `git:` URLs in `http:` URLs


139

Ich arbeite hinter einem http-Proxy. Ich versuche, den Quellbaum von Android mit dem "Repo" -Tool zu klonen.

Dieses Tool besteht darauf, git://URLs zu verwenden, obwohl http://URLs auch funktionieren. Daher kann ich die Quelle nicht herunterladen.

Ist es möglich zu erzwingen git, immer zu verwenden http?

Bearbeiten: Mein http_proxy ist korrekt konfiguriert. Zum Beispiel funktioniert dies:

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

Dies ist jedoch nicht der Fall (errno = Zeitüberschreitung der Verbindung):

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

Also diese Antwort hilft mir nicht wirklich.


Antworten:


297

Hier ist ein Beispiel für das Umschreiben des Standardprotokolls für GitHub:

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

Git-Dokumentation für url.<base>.insteadOf:

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

Jede URL, die mit diesem Wert beginnt, wird neu geschrieben, um stattdessen mit zu beginnen <base>. Wenn mehr als eine Zeichenfolge mit einer bestimmten URL übereinstimmt, wird die längste Übereinstimmung verwendet.


19
hilft, wenn die Firewall das Git-Protokoll blockiert! :)
Wojtek Turowicz

Kann ich hier eine Frage stellen? Ich habe dies verwendet, aber "heeps" anstatt "https" geschrieben. Wie kann ich das korrigieren? Hat 'git config --global.url. github.com/.insteadOf heeps: //github.com/ 'arbeiten?
Xuxu

1
Tipp: git remote -vzeigt sofort Wirkung insteadOfund pushInsteadOfKonfiguration
Beni Cherniavsky-Paskin

Dies funktionierte für mich in öffentlichem WiFi mit blockiertem 22 Port. Wie kann die Konfiguration auf die Standardeinstellungen zurückgesetzt werden?
Yivo

14
Diese Antwort hätte es fast für mich geschafft, außer dass mein Repository ein git@github.com:...Format für die URLs verwendete. Das hat funktioniert: git config --global url."https://github.com/".insteadOf 'git@github.com:'für mich.
Kraenhansen

35

Ich weiß nicht, wie dieses Repo- Tool Git verwendet (und ob Sie 'repo' für die Verwendung des http-Protokolls konfigurieren können), aber Sie können versuchen, es mithilfe der url.<base>.insteadOfKonfigurationsvariablen auszutricksen (siehe Manpages git-config und git-fetch ).

Haben Sie versucht, die core.gitProxyFirewall zu passieren, wenn dies das Problem bei der Verwendung des Git-Protokolls ist?


2
Danke, diese "anstatt" -Variable ist genau das, was ich brauchte.
Noamtm

23

Ich hatte das gleiche Problem mit dem rekursiven Abrufen von Submodulen in einem Git-Repository. Ich bin hinter einer verrückten Firewall, die keine ausgehenden Verbindungen am Git-Port zulässt. Einige der Submodule der Submodule wurden als codiert git://github.com/blah/blah.git. Dies tötete meine rekursive Population von Submodulen. Die Problemumgehung ist folgende:

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

Dies ersetzt git:// durch https://<GITUSERNAME>@in allen Submodul-Repository-URLs ersetzt. Sie müssen durch <GITUSERNAME>Ihren eigenen Git-Benutzernamen ersetzen . Beachten Sie auch, dass das --globalerforderlich ist; Das Hinzufügen dieser Konfiguration zum Basis-Repository-Verzeichnis funktioniert nicht.


3
Verwenden Sie nicht nur git config --global url. "Https: //" .insteadOf git: // wie hier gezeigt? github.com/angular/angular-phonecat/issues/141 Ich meine, ist der Benutzername obligatorisch?
Αλέκος

3

Sie können überprüfen, ~/.gitconfigob Sie SSH mit https: // überschreiben oder umgekehrt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.