Como eu pego de um repository Git através de um proxy HTTP?

Nota: enquanto o caso de uso descrito é sobre o uso de sub-módulos dentro de um projeto, o mesmo se aplica a um git clone normal de um repository sobre HTTP.

Eu tenho um projeto sob controle do Git. Eu gostaria de adicionar um submódulo:

 git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu 

Mas eu fico

 ... 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 o meu HTTP_PROXY configurado:

 c:\project> echo %HTTP_PROXY% http://proxy.mycompany:80 

Eu até tenho uma configuração global do Git para o proxy http:

 c:\project> git config --get http.proxy http://proxy.mycompany:80 

Alguém obteve buscas HTTP para trabalhar consistentemente através de um proxy? O que é realmente estranho é que alguns projetos no GitHub funcionam bem ( awesome_nested_set por exemplo), mas outros falham consistentemente ( rails, por exemplo).

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 

Há ótimas respostas sobre isso já. No entanto, eu pensei que eu iria chip como alguns servidores proxy exigem que você autentique com um ID de usuário e senha. Às vezes isso pode estar em um domínio.

Portanto, por exemplo, se a configuração do servidor proxy for a seguinte:

 Server: myproxyserver Port: 8080 Username: mydomain\myusername Password: mypassword 

Em seguida, adicione ao seu arquivo .gitconfig usando o seguinte comando:

 git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080 

Não se preocupe com https . Contanto que o servidor proxy especificado ofereça suporte a http e https, uma input no arquivo de configuração será suficiente.

Você pode então verificar se o comando adicionou a input ao seu arquivo .gitconfig com sucesso, executando cat .gitconfig :

No final do arquivo, você verá uma input da seguinte forma:

 [http] proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080 

É isso aí!

O que finalmente funcionou foi definir a variável de ambiente http_proxy . Eu tinha configurado HTTP_PROXY corretamente, mas o git aparentemente gosta mais da versão minúscula.

Parece que você está usando uma compilation de Mingw do Git no Windows (ou possivelmente outra que eu não tenha ouvido falar). Existem maneiras de depurar isso: Acredito que todo o trabalho de proxy http para git é feito por curl. Configure esta variável de ambiente antes de executar o git:

 GIT_CURL_VERBOSE=1 

Isso deve pelo menos dar uma ideia do que está acontecendo nos bastidores.

Quando sua equipe de rede realiza a inspeção SSL, reescrevendo certificados, o uso de uma URL http em vez de uma https, combinado com a configuração dessa var funcionou para mim.

 git config --global http.proxy http://proxy:8081 

Se você quiser apenas usar o proxy em um repository especificado, não precisa de outros repositorys. A maneira preferida é a opção -c, --config quando você git clone um repository. por exemplo

 $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort" 

Você também pode editar o arquivo .gitconfig localizado no diretório% userprofile% no sistema Windows ( notepad% userprofile% .gitconfig ) ou no diretório ~ no sistema Linux ( vi ~ / .gitconfig ) e adicionar uma seção http como abaixo.

Conteúdo do arquivo .gitconfig:

 [http] proxy = http://proxy.mycompany:80 

Essa é uma pergunta antiga, mas se você estiver no Windows, considere configurar 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: // o faça. Isso causou um pouco de dor de cabeça porque eu estava executando scripts que todos usavam git: //, então eu não poderia simplesmente mudá-los facilmente. No entanto eu encontrei este GEM

 git config --global url."https://github.com/".insteadOf git://github.com/ 

Eu não acho nem http.proxy nem GIT_PROXY_COMMAND trabalho para o meu proxy http autenticado. O proxy não é acionado de nenhuma maneira. Mas eu acho uma maneira de contornar isso.

  1. Instale saca-rolhas ou outras alternativas desejadas.
  2. Crie um authfile. O formato para authfile é: user_name:password e user_name , password é seu nome de usuário e senha para acessar seu proxy. Para criar tal arquivo, simplesmente execute o comando desta forma: echo "username:password" > ~/.ssh/authfile .

  3. Edite ~/.ssh/config , e tenha certeza que sua permissão é 644 : chmod 644 ~/.ssh/config

Tome github.com como um exemplo, adicione as seguintes linhas para ~/.ssh/config :

 Host github.com HostName github.com ProxyCommand /usr/local/bin/corkscrew   %h %p  User git 

Agora, sempre que você fizer algo com git@github.com , ele usará o proxy automaticamente. Você pode facilmente fazer a mesma coisa com o Bitbucket também.

Isto não é tão elegante como outras abordagens, mas funciona como um encanto.

No Windows, se você não quiser colocar sua senha em .gitconfig no texto simples, você pode usar

Ele autentica você contra o proxy NTLM normal ou mesmo do Windows e inicia o proxy localhost sem autenticação.

Para executá-lo:

  • Instalar o Cntml
  • Configure o Cntml de acordo com a documentação para passar sua autenticação de proxy
  • Aponte git para seu novo proxy 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 de 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 permissions de execução

 chmod a+x gitproxy 

Execute os seguintes comandos para o ambiente de instalação:

 export PATH=$BIN_PATH:$PATH git config --global core.gitproxy gitproxy 

Apenas para postar isso, pois é o primeiro resultado no Google, esta postagem de blog que encontrei resolve o problema para mim, atualizou os certificados de curl.

http://www.simplicidade.org/notes/archives/2011/06/github_ssl_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 

Eu tive o mesmo problema, com uma correção ligeiramente diferente: RECONSTRUINDO O GIT COM SUPORTE HTTP

O git: protocol não funcionou através do meu firewall corporativo.

Por exemplo, este tempo expirou:

 git clone git://github.com/miksago/node-websocket-server.git 

curl github.com funciona muito bem, então eu sei que a minha variável de ambiente http_proxy está correta.

Eu tentei usar http , como abaixo, mas recebi um erro imediato.

 git clone http://github.com/miksago/node-websocket-server.git ->>> fatal: Unable to find remote helper for 'http' < <<- 

Eu tentei recompilar o git assim:

 ./configure --with-curl --with-expat 

mas ainda tem o erro fatal.

Finalmente, depois de várias horas frustrantes, eu li o arquivo de configuração e vi isso:

# Definir CURLDIR = / foo / bar se seus arquivos de header e biblioteca de curl estão em

# / foo / bar / include e / foo / bar / lib diretórios.

Lembrei-me então, que eu não tinha cumprido o curl da fonte, e assim fui procurar os arquivos de header. Com certeza, eles não foram instalados. Esse foi o problema. Make não se queixou dos arquivos de header ausentes. Então eu não percebi que a opção --with-curl não fez nada (é, na verdade, o padrão na minha versão do git ).

Eu fiz o seguinte para corrigi-lo:

  1. Adicionado os headers necessários para fazer:

     yum install curl-devel (expat-devel-1.95.8-8.3.el5_5.3.i386 was already installed). 
  2. Removido o git de /usr/local (como eu quero que a nova instalação viva lá).

    Eu simplesmente removi o git* de /usr/local/share e /usr/local/libexec

  3. Pesquisou os diretórios include contendo os arquivos de header curl e expat e, em seguida (porque eu tinha lido através do configure ), adicionei estes ao ambiente da seguinte forma:

     export CURLDIR=/usr/include export EXPATDIR=/usr/include 
  4. Ran configure com as seguintes opções, que, novamente, foram descritas no próprio arquivo configure , e também foram os padrões mas o que diabos:

     ./configure --with-curl --with-expat 
  5. E agora o http funciona com o git 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 ... 

Isso funcionou para mim.

 git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port 

Isto não é um problema com o seu proxy. É um problema com o github (ou git). Ele falha para mim no git-1.6.0.1 no linux também. Bug já é relatado (por você não menos).

Certifique-se de excluir seus pastéis, eles já estão no google. Edit: Deve ter sonhado, eu acho que você não pode excluí-los. Use Gist em vez disso?

$ http_proxy é para http://github.com …. $ https_proxy é para https://github.com

Para Windows

Ir para -> C: / Users / user_name / gitconfig

Atualize o arquivo gitconfig com os 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

você pode usar:

 git config --add http.proxy http://user:password@proxy_host:proxy_port 

Use os proxychains

 proxychains git pull ... 

update: proxychains é descontinuado, use proxychains-ng .

Eu tenho em torno do proxy usando https … alguns proxies nem sequer verificar 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 o meu proxy não precisa de autenticação. Se você estiver usando um proxy que requer autenticação, tente o CCProxy. Eu tenho um pequeno tutorial sobre como configurá-lo aqui,

http://blog.praveenkumar.co.in/2012/09/proxy-free-windows-xp78-and-mobiles.html

Eu fui capaz de empurrar, puxar, criar novos repositorys. Tudo funcionou bem. Certifique-se de fazer uma desinstalação limpa e reinstalar a nova versão se você estiver enfrentando problemas com o Git como eu fiz.

Como isso foi respondido por muitos, mas isso é apenas para Winodws USER que está por trás do proxy com auth.

Reinstalação (primeiro falha, não remove).

 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ê tem algum caracter especial em user / pass use url_encode

como @ user2188765 já apontou, tente replace o protocolo git:// do repository com http[s]:// . Veja também esta resposta

Defina Git credential.helper como wincred.

 git config --global credential.helper wincred 

Certifique-se de que existe apenas 1 credencial.helper

 git config -l 

Se houver mais de 1 e não estiver definido como wincred, remova-o.

 git config --system --unset credential.helper 

Agora defina o proxy sem senha.

 git config --global http.proxy http://@proxy:80 

Verifique se todas as configurações adicionadas parecem boas ….

 git config --global -l 

Agora é bom ir!