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

Foi útil?

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.

  1. Instalar saca rolhas, ou outras alternativas que você deseja.
  2. Crie um arquivo de autenticação. O formato para authfile é: user_name:password, e user_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.

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

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:

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

  3. Procurou o inclusão de inclusão contendo o curl e expat arquivos de cabeçalho e então (porque eu li configure) Adicioná -los ao meio ambiente como assim:

    export CURLDIR=/usr/include 
    export EXPATDIR=/usr/include
    
  4. Correu configure com as seguintes opções, que, novamente, foram descritas no configure arquivar -se, e também eram os padrões, mas que diabos:

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

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top