Wie ziehe ich durch einen HTTP -Proxy aus einem Git -Repository?
-
02-07-2019 - |
Frage
HINWEIS: Während es in der beschriebenen Anwendungsfall die Verwendung von Submodule innerhalb eines Projekts betrifft, gilt dies auch für eine Normale git clone
eines Repositorys über http.
Ich habe ein Projekt unter Git Control. Ich möchte 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 HTTP -Abrufen erhalten, um konsequent einen Proxy zu durcharbeiten? Was wirklich seltsam ist, ist, dass ein paar Projekte auf Github einwandfrei funktionieren (awesome_nested_set
zum Beispiel), aber andere ständig scheitern (Schienen zum Beispiel).
Lösung 3
Was schließlich funktionierte, war, das zu setzen http_proxy
Umgebungsvariable. Ich hatte gesetzt HTTP_PROXY
Richtig, aber Git mag anscheinend die niedrigere Version besser.
Andere Tipps
Sie können auch den HTTP -Proxy festlegen, den Git in der globalen Konfigurationseigenschaft verwendet http.proxy
:
git config --global http.proxy http://proxy.mycompany:80
Authentifizierung mit dem Proxy:
git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080/
(Gutschrift geht an @Eugenkulabuhov und @Jaimereynoso Für das Authentifizierungsformat.)
Es gibt schon einige großartige Antworten dazu. Ich dachte jedoch, ich würde mich mit einigen Proxy -Servern mit einer Benutzer -ID und einem Kennwort authentifizieren. Manchmal kann dies auf einer Domäne sein.
Wenn Ihre Proxy -Server -Konfiguration beispielsweise wie folgt ist:
Server: myproxyserver
Port: 8080
Username: mydomain\myusername
Password: mypassword
Dann fügen Sie zu Ihrem hinzu .gitconfig
Datei mit dem folgenden Befehl:
git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver: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 zu Ihrem hinzugefügt hat .gitconfig
erfolgreich durchführen cat .gitconfig
:
Am Ende der Datei sehen Sie einen Eintrag wie folgt:
[http]
proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080
Das ist es!
Es sieht so aus, als ob Sie ein Mingw -Kompilieren von Git unter Windows verwenden (oder möglicherweise eine andere, von der ich noch nie gehört habe). Es gibt Möglichkeiten, dies zu debuggen: Ich glaube, alle HTTP -Proxy -Arbeiten für Git werden von Curl durchgeführt. Stellen Sie diese Umgebungsvariable vor dem Ausführen von Git fest:
GIT_CURL_VERBOSE=1
Dies sollte Ihnen zumindest eine Vorstellung davon geben, was hinter den Kulissen vor sich geht.
Wenn Sie nur Proxy für ein bestimmtes Repository verwenden möchten, benötigen Sie nicht für andere Repositories. Der bevorzugte Weg ist der -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"
Wenn Ihr Netzwerkteam SSL-Inspection durch Umschreiben von Zertifikaten und dann eine HTTP-URL anstelle eines HTTPS One durchführt, kombiniert mit der Einstellung dieser VAR für mich.
git config --global http.proxy http://proxy:8081
Du könntest auch Bearbeiten .GitConfig -Datei befindet sich in % userProfile % Verzeichnis auf Windows System (Notepad %UserProfile %.GitConfig) oder in ~ Verzeichnis auf Linux -System (vi ~/.gitconfig) und Fügen Sie einen HTTP -Abschnitt hinzu wie nachstehend.
Inhalt der .gitconfig -Datei:
[http]
proxy = http://proxy.mycompany:80
Dies ist eine alte Frage, aber wenn Sie unter Windows sind, sollten Sie auch https_proxy festlegen, wenn Sie über eine HTTPS -URL abrufen. Arbeitete für mich!
Für mich funktioniert der Git: // einfach nicht den Proxy, obwohl die https: // tut. Dies verursachte einige Kopfschmerzen, weil ich Skripte ausführte, die alle Git verwendeten: //, sodass ich sie nicht einfach alle ändern konnte. Allerdings fand ich dieses Juwel
git config --global url."https://github.com/".insteadOf git://github.com/
Ich finde auch nicht http.proxy
Noch GIT_PROXY_COMMAND
Arbeiten Sie für meinen authentifizierten HTTP -Proxy. Der Stellvertreter wird in beiden Fällen nicht ausgelöst. Aber ich finde einen Weg, um dies zu umgehen.
- Installieren Korkenzieher, oder andere Alternativen, die Sie wollen.
Erstellen Sie eine Authfile. Das Format für
authfile
ist:user_name:password
, unduser_name
,password
Ist Ihr Benutzername und Ihr Passwort, um auf Ihren Proxy zuzugreifen? Um eine solche Datei zu erstellen, führen Sie einfach den Befehl wie diesen aus:echo "username:password" > ~/.ssh/authfile
.Bearbeiten
~/.ssh/config
, und stellen Sie sicher, dass seine Erlaubnis ist644
:chmod 644 ~/.ssh/config
Nehmen Sie Github.com als Beispiel, fügen Sie die folgenden Zeilen hinzu zu ~/.ssh/config
:
Host github.com
HostName github.com
ProxyCommand /usr/local/bin/corkscrew <your.proxy> <proxy port> %h %p <path/to/authfile>
User git
Nun, wann immer Sie etwas tun mit git@github.com
, Es wird den Proxy automatisch verwendet. Sie können leicht dasselbe tun Bit Bucket auch.
Dies ist nicht so elegant wie andere Ansätze, aber es funktioniert wie ein Zauber.
Wenn Sie unter Windows Ihr Passwort nicht in .GitConfig in den Klartext einfügen möchten, können Sie verwenden
- Cntml (http://cntlm.sourceforge.net/)
Es authentifiziert Sie gegen normale oder sogar Windows-NTLM-Proxy und startet die lokale Host-Proxy ohne Authentifizierung.
Um es laufen zu lassen:
- Installieren Sie CNTML
- Konfigurieren Sie CNTML gemäß der Dokumentation, um Ihre Proxy -Authentifizierung zu übergeben
Zeigen Sie auf Ihren neuen Localhost -Proxy:
[http] proxy = http://localhost:3128 # change port as necessary
Für mich war das, was es funktionierte:
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 geben
chmod a+x gitproxy
Führen Sie die folgenden Befehle aus, um die Umgebung für die Einrichtung zu erhalten:
export PATH=$BIN_PATH:$PATH
git config --global core.gitproxy gitproxy
Um dies zu veröffentlichen, wie es das erste Ergebnis bei Google ist, hat dieser Blog -Beitrag, den ich gefunden habe, das Problem für mich durch aktualisierte Curl -Zertifikate.
http://www.simplicidade.org/notes/archives/2011/06/github_ssl_ca_errors.html
Setup -Proxy zu 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
Das hat für mich funktioniert.
git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port
Ich hatte das gleiche Problem mit einer etwas anderen Lösung: Aufbau von Git mit HTTP -Unterstützung
Das git:
Protokoll hat meine Firmenfeuerwall nicht durchgearbeitet.
Zum Beispiel wurde dieser Zeitpunkt festgelegt:
git clone git://github.com/miksago/node-websocket-server.git
curl github.com
Funktioniert jedoch gut, also kenne ich meine http_proxy
Umgebungsvariable ist korrekt.
Ich habe versucht zu benutzen http
, wie unten, aber einen sofortigen Fehler.
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 wie so:
./configure --with-curl --with-expat
aber immer noch den tödlichen Fehler.
Nach mehreren frustrierenden Stunden las ich schließlich die Konfigurationsdatei und sah Folgendes:
# Definieren Sie Curldir =/Foo/Bar, wenn sich Ihr Curl -Header und Ihre Bibliotheksdateien befinden
#/foo/bar/include und/foo/bar/lib verzeichnis.
Ich erinnerte mich damals, dass ich nicht eingehalten hatte curl
Aus der Quelle, und so suchte nach den Header -Dateien. Sicher genug, sie wurden nicht installiert. Das war das Problem. Make beschwert sich nicht über die fehlenden Header -Dateien. Also merkte ich nicht, dass die --with-curl
Die Option hat nichts getan (es ist, tatsächlich die Standardeinstellung in meiner Version von git
).
Ich habe Folgendes gemacht, um es zu beheben:
Die für die Make benötigten Header fügte hinzu:
yum install curl-devel (expat-devel-1.95.8-8.3.el5_5.3.i386 was already installed).
ENTFERNT
git
aus/usr/local
(Wie ich möchte, dass die neue Installation dort lebt).Ich habe einfach entfernt
git*
aus/usr/local/share
und/usr/local/libexec
Gesucht nach den Include -Diren, die die enthalten
curl
undexpat
Header -Dateien und dann (weil ich durchgelesen hatteconfigure
) fügte diese in die Umgebung hinzu wie so:export CURLDIR=/usr/include export EXPATDIR=/usr/include
Rannte
configure
mit den folgenden Optionen, die wiederum in der beschrieben wurdenconfigure
Datei selbst und waren auch die Standardeinstellungen, aber was zum Teufel:./configure --with-curl --with-expat
Und nun
http
arbeitet mitgit
Durch meine Firmenfeuerwall: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 ...
Sie können verwenden:
git config --add http.proxy http://user:password@proxy_host:proxy_port
Setzen Sie Git Credential.helper auf Wincred.
git config --global credential.helper wincred
Stellen Sie sicher, dass es nur 1 Anmeldeinformationen gibt. Helfer
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
Stellen Sie nun den Proxy ohne Passwort fest.
git config --global http.proxy http://<YOUR WIN LOGIN NAME>@proxy:80
Überprüfen Sie, ob alle Einstellungen, die Sie hinzugefügt haben, gut aussieht ....
git config --global -l
Jetzt geht es dir gut zu gehen!
Dies ist kein Problem mit Ihrem Proxy. Es ist ein Problem mit Github (oder Git). Es scheitert auch für mich auf GIT-1.6.0.1 unter Linux. Insekt wird bereits gemeldet (von Ihnen nicht weniger).
Stellen Sie sicher, dass Sie Ihre Pasteten löschen, sie sind bereits bei Google. Bearbeiten: Muss geträumt haben, ich denke, Sie können sie nicht löschen. Verwenden Kern stattdessen?
$ http_proxy ist für http://github.com.... $ https_proxy ist für https://github.com...
Für Windows
GOTO -> C:/user/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 Ihren Proxy und Ihre Portnummer?
Internet Explorer -> Einstellungen -> Internetoptionen -> Verbindungen -> LAN -Einstellungen
Verwenden Proxychains
proxychains git pull ...
aktualisieren: Proxychains werden eingestellt, verwenden Proxychains-ng stattdessen.
Ich habe den Proxy mit HTTPS herumgekommen ... 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
Die obigen Antworten funktionierten für mich, wenn mein Proxy keine Authentifizierung benötigt. Wenn Sie Proxy verwenden, wodurch Sie sich authentifizieren müssen, können Sie CCProxy ausprobieren. Ich habe ein kleines Tutorial, wie ich es hier einstellen kann,
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 durchführen und eine neue Version neu installieren, wenn Sie Probleme mit Git haben, wie ich es getan habe.
Wie dies von vielen beantwortet wurde, aber das ist nur für Winodws Benutzer, der mit Auth.
Neuinstallation (zuerst fehlgeschlagen, nicht entfernen).
Goto ->
**Windows**
1. msysgit\installer-tmp\etc\gitconfig
Under [http]
proxy = http://user:pass@url:port
**Linux**
1. msysgit\installer-tmp\setup-msysgit.sh
export HTTP_PROXY="http://USER:PASS@proxy.abc.com:8080"
Wenn Sie einen speziellen SCHLOG in Benutzer-/Pass -Nutzung haben url_encode
Wie @user2188765 bereits darauf hingewiesen hat git://
Protokoll des Repositorys mit http[s]://
. Siehe auch Diese Antwort