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).
Was schließlich funktionierte, war das Setzen der Umgebungsvariablen http_proxy
. Ich hatte HTTP_PROXY
richtig eingestellt, aber git mag anscheinend die Kleinbuchstabenversion besser.
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.)
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!
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.
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"
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
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
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!
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/
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.
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
.
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.
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:
Zeigen Sie git auf Ihren neuen localhost-Proxy:
[http]
proxy = http://localhost:3128 # change port as necessary
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
git config --global http.proxy http://user:[email protected]:port
git config --global http.proxy http://clairton:[email protected]:8080
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
Das hat bei mir funktioniert.
git config --global http.proxy proxy_user:[email protected]_ip:proxy_port
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!
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:
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).
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
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
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
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
...
Verwenden Sie Proxyketten
proxychains git pull ...
Update: Proxy-Ketten werden nicht mehr angeboten, verwenden Sie stattdessen Proxy-Ketten-ng .
sie können verwenden:
git config --add http.proxy http://user:[email protected]_Host:proxy_port
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 ?
$ http_proxy ist für http://github.com .... $ https_proxy ist für https://github.com ...
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
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.
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
versuchen Sie, wie bereits von @ user2188765 erwähnt, das Protokoll git://
des Repositorys durch http[s]://
zu ersetzen. Siehe auch diese Antwort
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