541 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).

14voto

Thor88 Punkte 313

Setzen Sie Git credential.helper auf wincred.

git config --global credential.helper wincred

Stellen Sie sicher, dass es nur 1 credential.helper gibt

git config -l

Wenn es mehr als 1 gibt und es nicht auf wincred eingestellt ist, entfernen Sie es.

git config --system --unset credential.helper

Setzen Sie nun den Proxy ohne Passwort.

git config --global http.proxy http://<YOUR WIN LOGIN NAME>@proxy:80

Prüfen Sie, ob alle von Ihnen hinzugefügten Einstellungen gut aussehen....

git config --global -l

Jetzt sind Sie startklar!

12voto

Boris Brodski Punkte 7796

Wenn Sie unter Windows Ihr Kennwort nicht im Klartext in .gitconfig eingeben wollen, können Sie Folgendes verwenden

Es authentifiziert Sie gegenüber dem normalen oder sogar dem Windows NTLM-Proxy und startet den localhost-proxy ohne Authentifizierung.

Um es zum Laufen zu bringen:

  • Cntml installieren
  • Konfigurieren Sie Cntml gemäß der Dokumentation, um Ihre Proxy-Authentifizierung zu übergeben
  • Verweisen Sie git auf Ihren neuen localhost-Proxy:

    [http]
        proxy = http://localhost:3128       # change port as necessary

9voto

Lesswire Punkte 719

Bei mir hat es funktioniert:

sudo apt-get install socat

Erstellen Sie eine Datei in Ihrem $BIN_PATH/gitproxy mit:

#!/bin/sh 
_proxy=192.168.192.1 
_proxyport=3128 
exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport

Vergessen Sie nicht, ihm Ausführungsrechte zu erteilen

chmod a+x gitproxy

Führen Sie die folgenden Befehle aus, um die Umgebung einzurichten:

export PATH=$BIN_PATH:$PATH
git config --global core.gitproxy gitproxy

8voto

Clairton Luz Punkte 1840

Proxy für Git einrichten

Befehl

git config --global http.proxy http://user:password@domain:port

Beispiel

git config --global http.proxy http://clairton:123456@proxy.clairtonluz.com.br:8080

6voto

steve98177 Punkte 2071

Ich hatte das gleiche Problem, mit einer etwas anderen Lösung: GIT MIT HTTP-UNTERSTÜTZUNG NEU AUFBAUEN

El git: Protokoll nicht durch die Firewall meines Unternehmens funktioniert hat.

Zum Beispiel ist diese Zeit abgelaufen:

git clone git://github.com/miksago/node-websocket-server.git

curl github.com funktioniert jedoch einwandfrei, so dass ich weiß, dass meine http_proxy Umgebungsvariable korrekt ist.

Ich habe es mit http wie unten, erhielt aber sofort eine Fehlermeldung.

git clone http://github.com/miksago/node-websocket-server.git

->>>  fatal: Unable to find remote helper for 'http' <<<-

Ich habe versucht, git wie folgt neu zu kompilieren:

./configure  --with-curl --with-expat

aber immer noch den fatalen Fehler.

Schließlich, nach mehreren frustrierenden Stunden, las ich die configure-Datei, und sah dies:

# Definieren Sie CURLDIR=/foo/bar, wenn Ihre curl-Header- und Bibliotheksdateien in

# Die Verzeichnisse /foo/bar/include und /foo/bar/lib.

Da erinnerte ich mich daran, dass ich mich nicht daran gehalten hatte. curl von der Quelle, und so ging nach den Header-Dateien zu suchen. Natürlich waren sie nicht installiert. Das war das Problem. Make hat sich nicht über die fehlenden Header-Dateien beschwert. Also habe ich nicht erkannt, dass die --with-curl hat nichts bewirkt (sie ist in meiner Version von git ).

Ich habe das Problem wie folgt behoben:

  1. Die für die Herstellung benötigten Kopfzeilen wurden hinzugefügt:

    yum install curl-devel
    (expat-devel-1.95.8-8.3.el5_5.3.i386  was already installed).
  2. Entfernt git de /usr/local (da ich die neue Installation dort unterbringen möchte).

    Ich habe einfach entfernt git* de /usr/local/share y /usr/local/libexec

  3. Gesucht wurde nach den Include-Verzeichnissen, die die curl y expat Header-Dateien, und dann (weil ich mir die configure ) fügten diese der Umgebung wie folgt hinzu:

    export CURLDIR=/usr/include 
    export EXPATDIR=/usr/include
  4. Ran configure mit den folgenden Optionen, die wiederum im Abschnitt configure Datei selbst, und waren auch die Standardeinstellungen, aber was soll's:

    ./configure  --with-curl --with-expat
  5. Und jetzt http arbeitet mit git durch die Firewall meines Unternehmens:

    git clone http://github.com/miksago/node-websocket-server.git
    Cloning into 'node-websocket-server'...
    * Couldn't find host github.com in the .netrc file, using defaults
    * About to connect() to proxy proxy.entp.attws.com port 8080
    *   Trying 135.214.40.30... * connected
    ...

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