540 Stimmen

Wie kann ich ein Git-Repository über einen HTTP-Proxy abrufen?

Hinweis: Der beschriebene Anwendungsfall bezieht sich zwar auf die Verwendung von Submodulen innerhalb eines Projekts, aber das Gleiche gilt für ein normales git clone eines Repositorys über HTTP.

Ich habe ein Projekt unter Git-Kontrolle. Ich würde gerne ein Submodul hinzufügen:

git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu

Aber ich bekomme

...
got 1b0313f016d98e556396c91d08127c59722762d0
got 4c42d44a9221209293e5f3eb7e662a1571b09421
got b0d6414e3ca5c2fb4b95b7712c7edbf7d2becac7
error: Unable to find abc07fcf79aebed56497e3894c6c3c06046f913a under http://github.com/jscruggs/metri...
Cannot obtain needed commit abc07fcf79aebed56497e3894c6c3c06046f913a
while processing commit ee576543b3a0820cc966cc10cc41e6ffb3415658.
fatal: Fetch failed.
Clone of 'http://github.com/jscruggs/metric_fu.git' into submodule path 'vendor/plugins/metric_fu'

Ich habe meine HTTP_PROXY eingerichtet:

c:\project> echo %HTTP_PROXY%
http://proxy.mycompany:80

Ich habe sogar eine globale Git-Einstellung für den http-Proxy:

c:\project> git config --get http.proxy
http://proxy.mycompany:80

Hat jemand erreicht, dass HTTP-Abrufe durch einen Proxy konsistent funktionieren? Was wirklich seltsam ist, ist, dass ein paar Projekte auf GitHub gut funktionieren ( awesome_nested_set zum Beispiel), aber andere scheitern immer wieder ( Schienen zum Beispiel).

639voto

Derek Mahar Punkte 26470

Sie können den HTTP-Proxy, den Git verwendet, auch in der globalen Konfigurationseigenschaft http.proxy :

git config --global http.proxy http://proxy.mycompany:80

Zur Authentifizierung beim Proxy:

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080/

(Die Anerkennung geht an @EugeneKulabuhov y @JaimeReynoso für das Authentifizierungsformat).

152voto

Max MacLeod Punkte 25175

Es gibt bereits einige gute Antworten zu diesem Thema. Ich dachte jedoch, ich würde mich einmischen, da einige Proxy-Server verlangen, dass Sie sich mit einer Benutzerkennung und einem Passwort authentifizieren. Manchmal kann dies auf einer Domäne sein.

Wenn Ihr Proxyserver zum Beispiel wie folgt konfiguriert ist:

Server: myproxyserver
Port: 8080
Username: mydomain\myusername
Password: mypassword

Fügen Sie dann zu Ihrem .gitconfig Datei mit dem folgenden Befehl:

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080

Machen Sie sich keine Sorgen über https . Solange der angegebene Proxy-Server http und https unterstützt, reicht ein Eintrag in der Konfigurationsdatei aus.

Sie können dann überprüfen, ob der Befehl den Eintrag zu Ihrem .gitconfig Datei erfolgreich durch cat .gitconfig :

Am Ende der Datei finden Sie einen Eintrag wie folgt:

[http]
    proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080

Das war's!

139voto

James A. Rosen Punkte 62226

Was schließlich funktionierte, war die Einstellung der http_proxy Umgebungsvariable. Ich hatte die HTTP_PROXY korrekt, aber Git mag anscheinend die Version mit Kleinbuchstaben lieber.

73voto

alijandro Punkte 10877

Wenn Sie den Proxy nur für ein bestimmtes Repository verwenden wollen, brauchen Sie ihn für andere Repositories nicht. Der bevorzugte Weg ist die -c, --config <key=value> Option, wenn Sie git clone ein Repository. z.B.

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort"

55voto

sethbc Punkte 3225

Es sieht so aus, als würdest du eine mingw-Kompilierung von Git unter Windows verwenden (oder möglicherweise eine andere, von der ich noch nichts gehört habe). Es gibt Möglichkeiten, dies zu debuggen: Ich glaube, die gesamte http-Proxy-Arbeit für Git wird von curl erledigt. Setzen Sie diese Umgebungsvariable, bevor Sie Git ausführen:

GIT_CURL_VERBOSE=1

Dies sollte Ihnen zumindest eine Vorstellung davon vermitteln, was hinter den Kulissen vor sich geht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X