web-dev-qa-db-de.com

Wie ziehe ich aus einem Git-Repository über einen HTTP-Proxy?

Hinweis: Während es im beschriebenen Anwendungsfall um die Verwendung von Submodulen innerhalb eines Projekts geht, gilt dies auch für einen normalen git clone eines Repositorys über HTTP.

Ich habe ein Projekt unter Git-Kontrolle. Ich möchte ein Submodul hinzufügen:

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

Aber ich verstehe

...
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 mein 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 HTTP-Abrufe erhalten, um durchgehend über einen Proxy zu arbeiten? Was wirklich seltsam ist, ist, dass einige Projekte auf GitHub gut funktionieren ( awesome_nested_set zum Beispiel), andere jedoch durchgehend scheitern ( Rails zum Beispiel).

472
James A. Rosen

Was schließlich funktionierte, war das Setzen der Umgebungsvariablen http_proxy. Ich hatte HTTP_PROXY richtig eingestellt, aber git mag anscheinend die Kleinbuchstabenversion besser.

121
James A. Rosen

Sie können auch den von Git verwendeten HTTP-Proxy in der globalen Konfigurationseigenschaft http.proxy festlegen:

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

So authentifizieren Sie sich beim Proxy:

git config --global http.proxy http://mydomain\\myusername:[email protected]:8080/

(Gutschrift geht an @ EugeneKulabuhov und @ JaimeReynoso für das Authentifizierungsformat.)

562
Derek Mahar

Hierzu gibt es bereits einige gute Antworten. Ich dachte jedoch, ich würde mich einschalten, da einige Proxy-Server eine Authentifizierung mit einer Benutzer-ID und einem Kennwort erfordern. Manchmal kann dies auf einer Domain sein.

Wenn Ihre Proxy-Server-Konfiguration beispielsweise wie folgt lautet:

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

Fügen Sie dann Ihrer .gitconfig -Datei den folgenden Befehl hinzu:

git config --global http.proxy http://mydomain\\myusername:[email protected]:8080

Mach dir keine Sorgen um 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 erfolgreich zu Ihrer .gitconfig -Datei hinzugefügt hat, indem Sie cat .gitconfig ausführen:

Am Ende der Datei sehen Sie einen Eintrag wie folgt:

[http]
    proxy = http://mydomain\\myusername:[email protected]:8080

Das ist es!

145
Max MacLeod

Es sieht so aus, als ob Sie unter Windows eine mingw-Kompilierung von Git 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. Stellen Sie diese Umgebungsvariable ein, bevor Sie git ausführen:

GIT_CURL_VERBOSE=1

Dies sollte Ihnen zumindest eine Vorstellung davon geben, was sich hinter den Kulissen abspielt.

48
sethbc

Wenn Sie Proxy nur für ein bestimmtes Repository verwenden möchten, müssen Sie keine anderen Repositorys verwenden. Die bevorzugte Methode ist die Option -c, --config <key=value>, wenn Sie git clone ein Repository verwenden. z.B.

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

Wenn Ihr Netzwerkteam eine SSL-Überprüfung durch Umschreiben von Zertifikaten durchführt, hat die Verwendung einer http-URL anstelle einer https-URL in Kombination mit der Einstellung dieser Variablen für mich funktioniert.

git config --global http.proxy http://proxy:8081
26
bbaassssiiee

Sie könnten auch .gitconfig-Datei bearbeiten im Verzeichnis% userprofile% auf dem Windows-System befinden ( Editor% userprofile% .gitconfig ) oder im ~ Verzeichnis unter Linux ( vi ~/.gitconfig ) und fügen Sie einen http-Abschnitt hinz wie unten.

Inhalt der .gitconfig-Datei:

[http]
        proxy = http://proxy.mycompany:80
19
STB Land

Dies ist eine alte Frage, aber wenn Sie unter Windows arbeiten, sollten Sie HTTPS_PROXY auch festlegen, wenn Sie über eine https-URL abrufen. Arbeitete für mich!

16

Für mich funktioniert das git: // einfach nicht über den Proxy, obwohl das https: // funktioniert. Dies verursachte ein bisschen Kopfschmerzen, da ich Skripte ausführte, die alle git: // verwendeten, sodass ich sie nicht einfach alle ändern konnte. Allerdings habe ich dieses GEM gefunden

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

Ich finde weder http.proxy noch GIT_PROXY_COMMAND für meinen authentifizierten http-Proxy. Der Proxy wird in keiner Weise ausgelöst. Aber ich finde einen Weg, das zu umgehen.

  1. Installieren Sie Korkenzieher oder andere von Ihnen gewünschte Alternativen.
  2. Erstellen Sie eine Authdatei. Das Format für authfile lautet: user_name:password und user_name, password ist Ihr Benutzername und Kennwort für den Zugriff auf Ihren Proxy. Um eine solche Datei zu erstellen, führen Sie einfach den folgenden Befehl aus: echo "username:password" > ~/.ssh/authfile.

  3. Bearbeiten Sie ~/.ssh/config und stellen Sie sicher, dass die Berechtigung 644 ist: chmod 644 ~/.ssh/config

Nehmen Sie github.com als Beispiel und fügen Sie die folgenden Zeilen zu ~/.ssh/config hinzu:

Host    github.com
        HostName        github.com
        ProxyCommand    /usr/local/bin/corkscrew <your.proxy> <proxy port> %h %p <path/to/authfile>
        User            git

Wenn Sie nun mit [email protected] etwas tun, wird der Proxy automatisch verwendet. Das Gleiche können Sie auch mit Bitbucket tun.

Dies ist nicht so elegant wie andere Ansätze, aber es funktioniert wie ein Zauber.

11
Carlosin

Wenn Sie unter Windows Ihr Kennwort nicht im Nur-Text-Format in .gitconfig einfügen möchten, können Sie Folgendes verwenden

Es authentifiziert Sie gegen einen normalen oder sogar Windows NTLM-Proxy und startet localhost-proxy ohne Authentifizierung.

Um es zum Laufen zu bringen:

  • Installieren Sie Cntml
  • Konfigurieren Sie Cntml gemäß der Dokumentation, um Ihre Proxy-Authentifizierung zu bestehen
  • Zeigen Sie git auf Ihren neuen localhost-Proxy:

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

Bei mir hat es geklappt:

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ührungsberechtigungen 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
6
Lesswire

Proxy für Git einrichten

befehl

git config --global http.proxy http://user:[email protected]:port

beispiel

git config --global http.proxy http://clairton:[email protected]:8080
5
Clairton Luz

Nur um dies zu veröffentlichen, da es das erste Ergebnis bei Google ist, löst dieser Blogeintrag, den ich gefunden habe, das Problem, indem er die Curl-Zertifikate aktualisiert.

http://www.simplicidade.org/notes/archives/2011/06/github_ssl_ca_errors.html

5
RishiD

Das hat bei mir funktioniert.

git config --global http.proxy proxy_user:[email protected]_ip:proxy_port
4
Vagner Nogueira

Setze Git credential.helper auf wincred.

git config --global credential.helper wincred

Stellen Sie sicher, dass nur 1 credential.helper vorhanden ist

git config -l

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

git config --system --unset credential.helper

Stellen Sie nun den Proxy ohne Passwort ein.

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

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

git config --global -l

Nun kann es losgehen!

3
Thor88

Ich hatte das gleiche Problem mit einem etwas anderen Fix: REBUILDING GIT WITH HTTP SUPPORT

Das git: -Protokoll hat in meiner Unternehmens-Firewall nicht funktioniert.

Zum Beispiel ist dies abgelaufen:

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

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

Ich habe versucht, http zu verwenden, wie unten, habe aber sofort einen Fehler erhalten.

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

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

Ich habe versucht, git so neu zu kompilieren:

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

habe aber trotzdem den fatalen fehler bekommen.

Schließlich las ich nach einigen frustrierenden Stunden die Konfigurationsdatei und sah Folgendes:

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

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

Ich erinnerte mich dann, dass ich curl aus dem Quellcode nicht eingehalten hatte und suchte nach den Header-Dateien. Sicher genug, sie wurden nicht installiert. Das war das Problem. Make hat sich nicht über die fehlenden Header-Dateien beschwert. Daher habe ich nicht bemerkt, dass die Option --with-curl nichts bewirkt hat (es ist tatsächlich die Standardeinstellung in meiner Version von git).

Ich habe Folgendes getan, um das Problem zu beheben:

  1. Die für make benötigten Header wurden hinzugefügt:

    yum install curl-devel
    (expat-devel-1.95.8-8.3.el5_5.3.i386  was already installed).
    
  2. git aus /usr/local entfernt (da die neue Installation dort installiert werden soll).

    Ich habe einfach git* aus /usr/local/share und /usr/local/libexec entfernt

  3. Nach den Include-Verzeichnissen gesucht, die die Header-Dateien curl und expat enthalten, und diese dann (da ich configure durchgelesen hatte) der Umgebung folgendermaßen hinzugefügt:

    export CURLDIR=/usr/include 
    export EXPATDIR=/usr/include
    
  4. Lief configure mit den folgenden Optionen ab, die wiederum in der configure -Datei selbst beschrieben wurden und auch die Standardeinstellungen waren, aber was solls:

    ./configure  --with-curl --with-expat
    
  5. Und jetzt arbeitet http mit git über meine Unternehmens-Firewall:

    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
    ...
    
3
steve98177

Verwenden Sie Proxyketten

proxychains git pull ...

Update: Proxy-Ketten werden nicht mehr angeboten, verwenden Sie stattdessen Proxy-Ketten-ng .

2
fangxing

sie können verwenden:

git config --add http.proxy http://user:[email protected]_Host:proxy_port
2
montells

Dies ist kein Problem mit Ihrem Proxy. Es ist ein Problem mit Github (oder Git). Es schlägt für mich unter git-1.6.0.1 auch unter Linux fehl. Bug ist bereits gemeldet (von dir nicht weniger).

Stellen Sie sicher, dass Sie Ihre Pasteten löschen, sie sind bereits auf Google. Bearbeiten: Muss geträumt haben, ich denke, Sie können sie nicht löschen. Verwenden Sie stattdessen Gist ?

1
sethbc

$ http_proxy ist für http://github.com .... $ https_proxy ist für https://github.com ...

1
jimagic

Für Windows

Gehe zu -> C:/Users/user_name/gitconfig

Aktualisieren Sie die gitconfig-Datei mit den folgenden Details

[http]

[https]

proxy = https://your_proxy:your_port

[http]

proxy = http://your_proxy:your_port

Wie überprüfe ich meinen Proxy und meine Portnummer?

Internet Explorer -> Einstellungen -> Internetoptionen -> Verbindungen -> LAN-Einstellungen

1
School Boy

Die obigen Antworten haben bei mir funktioniert, wenn mein Proxy keine Authentifizierung benötigt. Wenn Sie einen Proxy verwenden, für den Sie sich authentifizieren müssen, können Sie CCProxy ausprobieren. Ich habe ein kleines Tutorial, wie man es hier einrichtet,

http://blog.praveenkumar.co.in/2012/09/proxy-free-windows-xp78-and-mobiles.html

Ich konnte schieben, ziehen, neue Repos erstellen. Alles hat gut funktioniert. Stellen Sie sicher, dass Sie eine saubere Deinstallation und Neuinstallation der neuen Version durchführen, wenn Sie auf Probleme mit Git stoßen, wie ich es getan habe.

0
Praveen

Ich habe mich mit https um den Proxy gekümmert ... einige Proxys überprüfen nicht einmal https.

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

c:\git\meantest>git clone http://github.com/linnovate/mean.git
Cloning into 'mean'...
fatal: unable to access 'http://github.com/linnovate/mean.git/': Failed connect
to github.com:80; No error

c:\git\meantest>git clone https://github.com/linnovate/mean.git
Cloning into 'mean'...
remote: Reusing existing pack: 2587, done.
remote: Counting objects: 27, done.
remote: Compressing objects: 100% (24/24), done.
rRemote: Total 2614 (delta 3), reused 4 (delta 0)eceiving objects:  98% (2562/26

Receiving objects: 100% (2614/2614), 1.76 MiB | 305.00 KiB/s, done.
Resolving deltas: 100% (1166/1166), done.
Checking connectivity... done
0
Robert Koch

versuchen Sie, wie bereits von @ user2188765 erwähnt, das Protokoll git:// des Repositorys durch http[s]:// zu ersetzen. Siehe auch diese Antwort

0
DomTomCat

Da dies von vielen aber beantwortet wurde, ist dies nur für Winodws USER, der mit auth hinter Proxy steht.

Neuinstallation (zuerst fehlgeschlagen, nicht entfernen).

Goto ->
**Windows**
1. msysgit\installer-tmp\etc\gitconfig
    Under [http]
        proxy = http://user:[email protected]:port

**Linux**
1. msysgit\installer-tmp\setup-msysgit.sh
      export HTTP_PROXY="http://USER:[email protected]:8080"

wenn Sie ein Sonderzeichen in user/pass haben, verwenden Sie rl_encode

0
Ravi Parekh