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

War es hilfreich?

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.

  1. Installieren Korkenzieher, oder andere Alternativen, die Sie wollen.
  2. Erstellen Sie eine Authfile. Das Format für authfile ist: user_name:password, und user_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.

  3. Bearbeiten ~/.ssh/config, und stellen Sie sicher, dass seine Erlaubnis ist 644: 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

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:

  1. 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).
    
  2. 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

  3. Gesucht nach den Include -Diren, die die enthalten curl und expat Header -Dateien und dann (weil ich durchgelesen hatte configure) fügte diese in die Umgebung hinzu wie so:

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

    ./configure  --with-curl --with-expat
    
  5. Und nun http arbeitet mit git 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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top