Como faço para retirar de um repositório Git através de um proxy HTTP?
-
02-07-2019 - |
Pergunta
Nota: Enquanto o caso de uso descrito é sobre o uso de submódulos dentro de um projeto, o mesmo se aplica a um normal git clone
de um repositório sobre http.
Eu tenho um projeto sob controle Git. Eu gostaria de adicionar um submódulo:
git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu
Mas eu entendo
...
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'
Eu tenho meu http_proxy configurado:
c:\project> echo %HTTP_PROXY%
http://proxy.mycompany:80
Eu até tenho uma configuração global de git para o proxy HTTP:
c:\project> git config --get http.proxy
http://proxy.mycompany:80
Alguém conseguiu que o HTTP busque consistentemente trabalhar com um proxy? O que é realmente estranho é que alguns projetos no github funcionam bem (awesome_nested_set
por exemplo), mas outros falham consistentemente (trilhos por exemplo).
Solução 3
O que finalmente funcionou foi definir o http_proxy
variável de ambiente. Eu tinha configurado HTTP_PROXY
Corretamente, mas o Git aparentemente gosta melhor da versão em caso inferior.
Outras dicas
Você também pode definir o proxy HTTP que o Git usa na propriedade de configuração global http.proxy
:
git config --global http.proxy http://proxy.mycompany:80
Para autenticar com o proxy:
git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080/
(Crédito vai para @EuGenekulabuhov e @Jaimerenoso para o formato de autenticação.)
Já existem ótimas respostas sobre isso. No entanto, pensei em entrar em contato com alguns servidores proxy exigem que você se autentique com um ID de usuário e senha. Às vezes isso pode ser em um domínio.
Por exemplo, se a configuração do seu servidor proxy for a seguinte:
Server: myproxyserver
Port: 8080
Username: mydomain\myusername
Password: mypassword
Então, adicione ao seu .gitconfig
Arquivo usando o seguinte comando:
git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080
Não se preocupe https
. Enquanto o servidor proxy especificado suportar http e https, uma entrada no arquivo de configuração será suficiente.
Você pode verificar se o comando adicionou a entrada ao seu .gitconfig
Arquivo com sucesso fazendo cat .gitconfig
:
No final do arquivo, você verá uma entrada da seguinte forma:
[http]
proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080
É isso!
Parece que você está usando uma compilação de git mingw no Windows (ou possivelmente outro que eu não ouvi falar). Existem maneiras de depurar isso: acredito que todo o trabalho de procuração HTTP para Git é feito por Curl. Defina esta variável de ambiente antes de executar o Git:
GIT_CURL_VERBOSE=1
Isso deve pelo menos dar uma idéia do que está acontecendo nos bastidores.
Se você deseja apenas usar proxy em um repositório especificado, não precisa de outros repositórios. A maneira preferível é o -c, --config <key=value>
opção quando você git clone
um repositório. por exemplo
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort"
Quando sua equipe de rede faz o SSL-Inspeção reescrevendo certificados, usando um URL HTTP em vez de um HTTPS One, combinado com a definição desse VAR funcionou para mim.
git config --global http.proxy http://proxy:8081
Você também poderia Edit .gitconfig Arquivo Localizado em % UserProfile % Diretório no sistema Windows (Notepad %userProfile %.gitconfig) ou no diretório ~ no sistema Linux (vi ~/.gitconfig) e Adicione uma seção HTTP como abaixo.
Conteúdo do arquivo .gitconfig:
[http]
proxy = http://proxy.mycompany:80
Esta é uma pergunta antiga, mas se você estiver no Windows, considere definir HTTPS_Proxy também se estiver recuperando por meio de um URL HTTPS. Trabalhou para mim!
Para mim, o git: // simplesmente não funciona através do proxy, embora o https: // faça. Isso causou um pouco de dor de cabeça, porque eu estava executando scripts que usavam git: // para que eu não pudesse facilmente alterar todos eles. No entanto, eu encontrei esta jóia
git config --global url."https://github.com/".insteadOf git://github.com/
Eu não encontro também http.proxy
nem GIT_PROXY_COMMAND
Trabalhe para meu proxy HTTP autenticado. O proxy não é acionado de qualquer maneira. Mas encontro uma maneira de contornar isso.
- Instalar saca rolhas, ou outras alternativas que você deseja.
Crie um arquivo de autenticação. O formato para
authfile
é:user_name:password
, euser_name
,password
é seu nome de usuário e senha para acessar seu proxy. Para criar esse arquivo, basta executar o comando como este:echo "username:password" > ~/.ssh/authfile
.Editar
~/.ssh/config
, e verifique se sua permissão é644
:chmod 644 ~/.ssh/config
Pegue o github.com como exemplo, adicione as seguintes linhas a ~/.ssh/config
:
Host github.com
HostName github.com
ProxyCommand /usr/local/bin/corkscrew <your.proxy> <proxy port> %h %p <path/to/authfile>
User git
Agora sempre que você faz qualquer coisa com git@github.com
, ele usará o proxy automaticamente. Você pode facilmente fazer a mesma coisa para Bitbucket também.
Isso não é tão elegante quanto outras abordagens, mas funciona como um charme.
No Windows, se você não quiser colocar sua senha em .gitconfig no texto simples, você pode usar
- Cntml (http://cntlm.sourceforge.net/)
Autentica você contra o proxy NTLM normal ou mesmo do Windows e inicia a proxi de localhost sem autenticação.
Para fazê -lo executar:
- Instale o CNTML
- Configure o CNTML de acordo com a documentação para aprovar sua autenticação de proxy
Point Git para o seu novo proxy de localhost:
[http] proxy = http://localhost:3128 # change port as necessary
Para mim, o que funcionou foi:
sudo apt-get install socat
Crie um arquivo dentro do seu $ bin_path/gitProxy com:
#!/bin/sh
_proxy=192.168.192.1
_proxyport=3128
exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport
Não se esqueça de dar permissões de execução
chmod a+x gitproxy
Execute os seguintes comandos para configurar o ambiente:
export PATH=$BIN_PATH:$PATH
git config --global core.gitproxy gitproxy
Apenas para postar isso, pois é o primeiro resultado no Google, esta postagem do blog que encontrei resolve o problema para mim, atualizando os certificados Curl.
http://www.simplicidade.org/notes/archives/2011/06/github_sssl_ca_errors.html
Configurar proxy para git
comando
git config --global http.proxy http://user:password@domain:port
exemplo
git config --global http.proxy http://clairton:123456@proxy.clairtonluz.com.br:8080
Isso funcionou para mim.
git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port
Eu tive o mesmo problema, com uma correção ligeiramente diferente: Reconstruindo o Git com suporte HTTP
o git:
O protocolo não funcionou no meu firewall corporativo.
Por exemplo, isso cronometrou:
git clone git://github.com/miksago/node-websocket-server.git
curl github.com
Funciona bem, porém, então eu conheço meu http_proxy
A variável de ambiente está correta.
Eu tentei usar http
, como abaixo, mas obteve um erro imediato.
git clone http://github.com/miksago/node-websocket-server.git
->>> fatal: Unable to find remote helper for 'http' <<<-
Eu tentei recompilar Git Like:
./configure --with-curl --with-expat
mas ainda recebeu o erro fatal.
Finalmente, depois de várias horas frustrantes, li o arquivo de configuração e vi o seguinte:
# Definir curldir =/foo/bar
#/foo/bar/incluir e/foo/bar/lib Diretórios.
Lembrei -me então, que não havia cumprido curl
da fonte, e assim foi procurar os arquivos de cabeçalho. Com certeza, eles não foram instalados. Esse foi o problema. O MAKE não reclamou dos arquivos de cabeçalho ausentes. Então eu não percebi que o --with-curl
a opção não fez nada (é, de fato, o padrão na minha versão de git
).
Eu fiz o seguinte para consertar:
Adicionado os cabeçalhos necessários para fazer:
yum install curl-devel (expat-devel-1.95.8-8.3.el5_5.3.i386 was already installed).
Removido
git
a partir de/usr/local
(Como eu quero que a nova instalação viva lá).Eu simplesmente removi
git*
a partir de/usr/local/share
e/usr/local/libexec
Procurou o inclusão de inclusão contendo o
curl
eexpat
arquivos de cabeçalho e então (porque eu liconfigure
) Adicioná -los ao meio ambiente como assim:export CURLDIR=/usr/include export EXPATDIR=/usr/include
Correu
configure
com as seguintes opções, que, novamente, foram descritas noconfigure
arquivar -se, e também eram os padrões, mas que diabos:./configure --with-curl --with-expat
E agora
http
funciona comgit
Através do meu firewall corporativo: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 ...
você pode usar:
git config --add http.proxy http://user:password@proxy_host:proxy_port
Defina o Git Credencial.Helper como WINCRED.
git config --global credential.helper wincred
Verifique se há apenas 1 credencial.Helper
git config -l
Se houver mais de 1 e não estiver pronto para o WINCRED, remova -o.
git config --system --unset credential.helper
Agora defina o proxy sem senha.
git config --global http.proxy http://<YOUR WIN LOGIN NAME>@proxy:80
Verifique se todas as configurações que você adicionou parecem boas ....
git config --global -l
Agora você está pronto para ir!
Isso não é um problema com seu proxy. É um problema com o github (ou git). Também falha para mim no Git-1.6.0.1 no Linux. Incomodar já é relatado (por você nada menos).
Certifique -se de excluir seus pastéis, eles já estão no Google. EDIT: Deve ter sonhado, acho que você não pode excluí -los. Usar Essência em vez de?
$ http_proxy é para http://github.com.... $ https_proxy é para https://github.com...
Para Windows
Goto -> c:/usuários/user_name/gitconfig
Atualize o arquivo gitconfig com detalhes abaixo
http
https
proxy = https://your_proxy:your_port
http
proxy = http://your_proxy:your_port
Como verificar seu proxy e número da porta?
Internet Explorer -> Configurações -> Opções da Internet -> Conexões -> Configurações da LAN
Usar proxychains
proxychains git pull ...
atualizar: Proxychains é descontinuado, use Proxychains-ng em vez de.
Eu adquiri o proxy usando HTTPS ... alguns proxies nem sequer verificam 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
As respostas acima funcionaram para mim quando meu proxy não precisa de autenticação. Se você estiver usando proxy, o que exige que você se autentique, poderá experimentar o CCProxy. Eu tenho um pequeno tutorial sobre como configurá -lo aqui,
http://blog.praveenkumar.co.in/2012/09/proxy-frie-windows-xp78-and-mobiles.html
Consegui empurrar, puxar, criar novos repositórios. Tudo funcionou bem. Certifique -se de fazer uma desinstalação limpa e reinstalação de uma nova versão se estiver enfrentando problemas com o Git como eu fiz.
Como isso foi respondido por muitos, mas isso é apenas para Winodws Usuário que está por trás do proxy com Auth.
Reinstalação (primeiro falhou, não remova).
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 você tiver algum char especial no uso de usuário/passe url_encode
Como @user2188765 já apontou, tente substituir o git://
protocolo do repositório com http[s]://
. Veja também esta resposta