Come estraggo da un repository Git tramite un proxy HTTP?
-
02-07-2019 - |
Domanda
Nota: mentre il caso d'uso descritto riguarda l'uso di sottomoduli all'interno di un progetto, lo stesso vale per un normale git clone
di un repository su HTTP.
Ho un progetto sotto il controllo di Git. Vorrei aggiungere un sottomodulo:
git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu
Ma ottengo
...
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'
Ho configurato il mio HTTP_PROXY:
c:\project> echo %HTTP_PROXY%
http://proxy.mycompany:80
Ho anche un'impostazione Git globale per il proxy http:
c:\project> git config --get http.proxy
http://proxy.mycompany:80
Qualcuno ha ottenuto i recuperi HTTP per funzionare costantemente attraverso un proxy? La cosa davvero strana è che alcuni progetti su GitHub funzionano bene ( awesome_nested_set
per esempio), ma altri fallire costantemente ( binari per esempio).
Soluzione 3
Ciò che alla fine ha funzionato è stato l'impostazione della variabile di ambiente http_proxy
. Avevo impostato HTTP_PROXY
correttamente, ma a quanto pare git preferisce la versione minuscola.
Altri suggerimenti
Puoi anche impostare il proxy HTTP che Git utilizza nella proprietà di configurazione globale http.proxy
:
git config --global http.proxy http://proxy.mycompany:80
Per eseguire l'autenticazione con il proxy:
git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080/
(Il credito va a @EugeneKulabuhov e @ JaimeReynoso per il formato di autenticazione.)
Ci sono già ottime risposte su questo. Tuttavia, ho pensato di aggiungere il chip poiché alcuni server proxy richiedono l'autenticazione con ID utente e password. A volte questo può essere su un dominio.
Quindi, ad esempio se la configurazione del server proxy è la seguente:
Server: myproxyserver
Port: 8080
Username: mydomain\myusername
Password: mypassword
Quindi, aggiungi al tuo .gitconfig
file usando il seguente comando:
git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080
Non preoccuparti di https
. Finché il server proxy specificato supporta http e https, sarà sufficiente una voce nel file di configurazione.
Puoi quindi verificare che il comando abbia aggiunto correttamente la voce al tuo cat .gitconfig
file facendo <=>:
Alla fine del file vedrai una voce come segue:
[http]
proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080
Questo è tutto!
Sembra che tu stia usando una compilazione mingw di Git su Windows (o forse un altro di cui non ho sentito parlare). Esistono modi per eseguire il debug di questo: credo che tutto il lavoro del proxy http per git sia svolto da curl. Imposta questa variabile d'ambiente prima di eseguire git:
GIT_CURL_VERBOSE=1
Questo dovrebbe almeno darti un'idea di cosa sta succedendo dietro le quinte.
Se si desidera solo utilizzare il proxy su un repository specificato, non è necessario su altri repository. Il modo preferibile è l'opzione -c, --config <key=value>
quando git clone
un repository. per es.
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort"
Quando il tuo team di rete fa l'ispezione ssl riscrivendo i certificati, quindi usando un URL http anziché uno https, combinato con l'impostazione di questo var ha funzionato per me.
git config --global http.proxy http://proxy:8081
Potresti anche modificare il file .gitconfig situato nella directory% userprofile% sul sistema Windows ( blocco note% userprofile% .gitconfig ) o nella directory ~ sul sistema Linux (< em> vi ~ / .gitconfig ) e aggiungi una sezione http come di seguito.
Contenuto del file .gitconfig:
[http]
proxy = http://proxy.mycompany:80
Questa è una vecchia domanda ma se sei su Windows, considera di impostare anche HTTPS_PROXY se stai recuperando tramite un URL https. Ha funzionato per me!
Per me git: // semplicemente non funziona attraverso il proxy sebbene https: // funzioni. Ciò ha causato un po 'di mal di testa perché stavo eseguendo script che tutti usavano git: // quindi non potevo semplicemente cambiarli tutti. Tuttavia ho trovato questo GEM
git config --global url."https://github.com/".insteadOf git://github.com/
Non trovo né http.proxy
né GIT_PROXY_COMMAND
funzionante per il mio proxy http autenticato. Il proxy non viene attivato in alcun modo. Ma trovo un modo per aggirare questo.
- Installa cavatappi o altre alternative che desideri.
-
Crea un file di autenticazione. Il formato per
authfile
è:user_name:password
euser_name
,password
è il nome utente e la password per accedere al proxy. Per creare un tale file, è sufficiente eseguire il comando in questo modo:echo "username:password" > ~/.ssh/authfile
. -
Modifica
~/.ssh/config
e assicurati che l'autorizzazione sia644
:chmod 644 ~/.ssh/config
Prendi github.com come esempio, aggiungi le seguenti righe a git@github.com
:
Host github.com
HostName github.com
ProxyCommand /usr/local/bin/corkscrew <your.proxy> <proxy port> %h %p <path/to/authfile>
User git
Ora ogni volta che fai qualcosa con <=>, utilizzerà automaticamente il proxy. Puoi fare facilmente la stessa cosa anche a Bitbucket .
Questo non è così elegante come altri approcci, ma funziona come un fascino.
Su Windows, se non si desidera inserire la password in .gitconfig nel testo normale, è possibile utilizzare
- Cntml ( http://cntlm.sourceforge.net/ )
Ti autentica rispetto al proxy NTLM normale o persino a Windows e avvia il proxy localhost senza autenticazione.
Per farlo funzionare:
- Installa Cntml
- Configura Cntml in base alla documentazione per passare l'autenticazione proxy
-
Punta git sul tuo nuovo proxy localhost:
[http] proxy = http://localhost:3128 # change port as necessary
Per me quello che ha funzionato è stato:
sudo apt-get install socat
Crea un file nel tuo $ BIN_PATH / gitproxy con:
#!/bin/sh
_proxy=192.168.192.1
_proxyport=3128
exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport
Non dimenticare di concedergli le autorizzazioni per l'esecuzione
chmod a+x gitproxy
Esegui i seguenti comandi per configurare l'ambiente:
export PATH=$BIN_PATH:$PATH
git config --global core.gitproxy gitproxy
Solo per pubblicare questo dato che è il primo risultato su Google, questo post sul blog che ho trovato risolve il problema per me aggiornando i certificati di arricciatura.
http://www.simplicidade.org/notes/archives/ 2011/06 / github_ssl_ca_errors.html
Installa proxy su git
comando
git config --global http.proxy http://user:password@domain:port
Esempio
git config --global http.proxy http://clairton:123456@proxy.clairtonluz.com.br:8080
Questo ha funzionato per me.
git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port
Ho avuto lo stesso problema, con una correzione leggermente diversa: RICOSTRUZIONE GIT CON SUPPORTO HTTP
Il protocollo git:
non ha funzionato attraverso il mio firewall aziendale.
Ad esempio, questo è scaduto:
git clone git://github.com/miksago/node-websocket-server.git
curl github.com
funziona bene, tuttavia, quindi so che la mia variabile di ambiente http_proxy
è corretta.
Ho provato a utilizzare http
, come di seguito, ma ho riscontrato un errore immediato.
git clone http://github.com/miksago/node-websocket-server.git
->>> fatal: Unable to find remote helper for 'http' <<<-
Ho provato a ricompilare git in questo modo:
./configure --with-curl --with-expat
ma ha ancora ricevuto l'errore fatale.
Alla fine, dopo diverse ore frustranti, ho letto il file di configurazione, e ho visto questo:
# Definisci CURLDIR = / foo / bar se i tuoi file di intestazione e libreria sono arricciati
# / foo / bar / include e / foo / bar / lib directory.
Allora mi sono ricordato che non avevo rispettato curl
dalla fonte, e così è andato
cercando i file di intestazione. Abbastanza sicuro, non sono stati installati. Questo era il problema. Make non si è lamentato dei file di intestazione mancanti. Così
Non mi rendevo conto che l'opzione --with-curl
non faceva nulla (è, in effetti, il valore predefinito nella mia versione di git
).
Ho fatto quanto segue per risolverlo:
-
Aggiunte le intestazioni necessarie per make:
yum install curl-devel (expat-devel-1.95.8-8.3.el5_5.3.i386 was already installed).
-
Rimosso
/usr/local
dagit*
(poiché voglio che la nuova installazione vivesse lì).Ho semplicemente rimosso
/usr/local/share
da/usr/local/libexec
eexpat
-
Ho cercato le directory di inclusione contenenti i file di intestazione
configure
e <=>, e poi (poiché avevo letto attraverso <=>) le hanno aggiunte all'ambiente in questo modo:export CURLDIR=/usr/include export EXPATDIR=/usr/include
-
Ho funzionato <=> con le seguenti opzioni, che, ancora una volta, sono state descritte nel <=> file stesso, e sono state anche le impostazioni predefinite ma che diamine:
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 ...
-
E ora <=> funziona con <=> tramite il mio firewall aziendale:
<*>
puoi usare:
git config --add http.proxy http://user:password@proxy_host:proxy_port
Imposta Git credential.helper su wincred.
git config --global credential.helper wincred
Assicurati che ci sia solo 1 credential.helper
git config -l
Se è presente più di 1 e non è impostato su Wincred, rimuoverlo.
git config --system --unset credential.helper
Ora imposta il proxy senza password.
git config --global http.proxy http://<YOUR WIN LOGIN NAME>@proxy:80
Controlla che tutte le impostazioni che hai aggiunto abbiano un bell'aspetto ....
git config --global -l
Ora sei a posto!
Questo non è un problema con il tuo proxy. È un problema con github (o git). Fallisce anche per me su git-1.6.0.1 su Linux. Bug è già stato segnalato (da te no meno).
Assicurati di eliminare i tuoi pasticci, sono già su Google. Modifica: devo aver sognato, suppongo che non puoi eliminarli. Utilizzare Gist invece?
$ http_proxy è per http://github.com .... $ https_proxy è per https://github.com ...
Per Windows
Vai a > C: / Users / nome_utente / gitconfig
Aggiorna il file gitconfig con i dettagli di seguito
[http]
[https]
proxy = https://your_proxy:your_port
[http]
proxy = http://your_proxy:your_port
Come controllare il proxy e il numero di porta?
Internet Explorer - > Impostazioni - & Gt; Opzioni Internet - & Gt; Collegamenti - & Gt; Impostazioni LAN
Usa proxychains
proxychains git pull ...
aggiornamento: proxychains è fuori produzione, usa proxychains-ng invece.
Ho aggirato il proxy usando https ... alcuni proxy non controllano nemmeno 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
Le risposte sopra hanno funzionato per me quando il mio proxy non ha bisogno di autenticazione. Se si utilizza un proxy che richiede l'autenticazione, è possibile provare CCProxy. Ho un piccolo tutorial su come impostarlo qui,
http: // blog. praveenkumar.co.in/2012/09/proxy-free-windows-xp78-and-mobiles.html
Sono stato in grado di spingere, tirare, creare nuovi repository. Tutto ha funzionato bene. Assicurati di fare una disinstallazione pulita e reinstallare la nuova versione se stai affrontando problemi con Git come ho fatto io.
Dato che molti hanno risposto, ma questo è solo per Winodws UTENTE che si trova dietro un proxy con autenticazione.
Reinstalla (prima non riuscita, non rimuovere).
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"
se hai un carattere speciale in user / pass usa url_encode
come @ user2188765 ha già sottolineato, prova a sostituire il protocollo git://
del repository con http[s]://
. Vedi anche questa risposta