Como posso obter de um repositório Git através de um proxy HTTP?

Nota: Embora o caso de uso descrito seja sobre a utilização de submódulos dentro de um projecto, o mesmo se aplica a um git clone normal de um repositório sobre HTTP.

Tenho um projecto sob controlo do Git. Gostaria de adicionar um submódulo:

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

Mas eu tenho

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

tenho a minha HTTP_ proxy preparada:

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

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 conseguiu obter resultados de HTTP para funcionar consistentemente através de um proxy? O que é realmente estranho é que um poucos projetos no GitHub funcionam bem (awesome_nested_set por exemplo), mas outros sempre falham (trilhos por exemplo).

Author: kenorb, 2008-09-24

26 answers

Você também pode definir o 'proxy' de HTTP que o Git usa na propriedade de configuração globalhttp.proxy:

git config --global http.proxy http://proxy.mycompany:80
 529
Author: Derek Mahar, 2016-11-30 15:18:40
Já há grandes respostas sobre isto. No entanto, eu pensei que eu iria chip em como alguns servidores proxy exigem que você se autentique com um ID de usuário e senha. Às vezes isto pode ser num domínio.

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

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

Depois, adicione ao seu ficheiro .gitconfig usando o seguinte comando:

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080
Não te preocupes com isso. Desde que o servidor proxy especificado suporte http, e https, então um item no arquivo de configuração será suficiente.

Poderá então verificar se o comando adicionou o item ao seu ficheiro .gitconfig com sucesso, fazendo cat .gitconfig:

No final do ficheiro, verá uma entrada como se segue:

[http]
    proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080
É isso!
 142
Author: Max MacLeod, 2014-01-16 14:25:54

O que finalmente funcionou foi definir a variável de ambiente http_proxy. Eu tinha configurado {[[1]} corretamente, mas o git aparentemente gosta mais da versão em minúsculas.

 114
Author: James A. Rosen, 2015-07-11 16:56:41

Parece que estás a usar uma compilação mingw do Git no windows (ou possivelmente outra que não ouvi falar). Existem maneiras de depurar isso: eu acredito que todo o trabalho de proxy http para o git é feito pelo curl. Defina esta variável de ambiente antes de executar o git:

GIT_CURL_VERBOSE=1
Isto deve, pelo menos, dar-te uma ideia do que se passa nos bastidores.
 45
Author: sethbc, 2008-09-24 16:24:51

Quando a sua equipa de rede faz a inspecção ssl, reescrevendo certificados, então usando um url http em vez de um https, combinado com a configuração deste var funcionou para mim.

git config --global http.proxy http://proxy:8081
 24
Author: bbaassssiiee, 2013-03-11 15:34:02

Se só quiser usar o 'proxy' num repositório indicado, não precisa de outros repositórios. A forma preferível é a opção -c, --config <key=value> 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"
 20
Author: alijandro, 2014-12-24 01:45:28

Você também pode editar .o ficheiro gitconfig está localizado na pasta %userprofile% no sistema Windows ( notepad %userprofile%.gitconfig ) ou em ~ directory on Linux system (vi ~/.gitconfig) e adicionem uma secção http como se segue.

Teor de .ficheiro gitconfig:

[http]
        proxy = http://proxy.mycompany:80
 18
Author: STB Land, 2012-10-19 08:35:10

Esta é uma pergunta antiga, mas se estiver no Windows, considere a opção Configurar o HTTPS_ proxy, bem como se estiver a obter através de um URL do https. Funcionou comigo!

 15
Author: Benjamin Wootton, 2011-04-19 11:51:04

Para mim, o git:// simplesmente não funciona através do proxy, embora o https:// funcione. Isso causou um pouco de dor de cabeça porque eu estava executando scripts que todos usaram git:// então eu não poderia simplesmente facilmente mudar todos eles. No entanto, encontrei esta jóia.

git config --global url."https://github.com/".insteadOf git://github.com/
 13
Author: TonyT_32909023190, 2017-05-18 09:53:40

Não encontro nem http.proxy Nem GIT_PROXY_COMMAND trabalho para o meu 'proxy' http autenticado. O proxy não é ativado de qualquer forma. Mas eu arranjo maneira de resolver isto.

  1. instale saca-rolhas , ou outras alternativas que queira.
  2. Criar um authfile. O formato para authfile é: user_name:password, e user_name, password é o seu utilizador e senha para aceder ao seu proxy. Para criar tal ficheiro, basta executar um comando como este: echo "username:password" > ~/.ssh/authfile.

  3. Edite ~/.ssh/config, e certifique-se a sua permissão é 644: chmod 644 ~/.ssh/config

Toma. github.com como exemplo, adicione as seguintes linhas ~/.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 fizer alguma coisa com [email protected], irá usar o 'proxy' automaticamente. Você pode facilmente fazer a mesma coisa com a Bitbucket também.

Isto não é tão elegante como outras abordagens, mas funciona como um encanto.
 11
Author: Carlosin, 2015-03-26 03:55:53

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

Autentica-o contra o 'proxy' normal ou mesmo do Windows NTLM e inicia o 'localhost-proxy' sem autenticação.

Para a pôr a funcionar:

  • Instalar O Cntml
  • Configure o Cntml de acordo com a documentação para passar a sua autenticação por 'proxy'
  • Aponta o git para o teu novo 'proxy' localhost:

    [http]
        proxy = http://localhost:3128       # change port as necessary
    
 10
Author: Boris Brodski, 2014-02-20 09:46:31
Para mim, o que resultou foi:
sudo apt-get install socat

Crie um ficheiro 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 lhe dar permissões de execução

chmod a+x gitproxy

Executar os seguintes comandos para configurar o ambiente:

export PATH=$BIN_PATH:$PATH
git config --global core.gitproxy gitproxy
 6
Author: Lesswire, 2015-04-09 09:23:59

Apenas para postar este como é o primeiro resultado no Google, este post que eu encontrei resolve o problema para mim, atualizando os certificados de curl.

Http://www.simplicidade.org/notes/archives/2011/06/github_ssl_ca_errors.html

 5
Author: RishiD, 2011-08-26 14:56:53

Configurar o 'proxy' para o git

Comando

git config --global http.proxy http://user:password@domain:port

Exemplo

git config --global http.proxy http://clairton:[email protected]:8080
 4
Author: Clairton Luz, 2016-11-24 13:21:17

Tive o mesmo problema, com uma correcção ligeiramente diferente: a reconstruir o GIT com o suporte HTTP

O protocolo não funcionou através da minha firewall corporativa.

Por exemplo, isto expirou:

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

curl github.com funciona muito bem, por isso sei que a minha variável de ambiente está correcta.

Tentei usar http, como em baixo, mas tive um erro imediato.

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

->>>  fatal: Unable to find remote helper for 'http' <<<-
Tentei recompilar o git assim.
./configure  --with-curl --with-expat
Mas ainda tenho erro. Finalmente, depois de várias horas frustrantes, li o ficheiro configurar., e vi isto:

# Define CURLDIR= / foo / bar se os seus ficheiros de cabeçalho e biblioteca estão em

# / foo/bar /include E/foo/bar / lib directories.

Lembrei-me então que não tinha cumprido desde a origem, e assim fui à procura dos ficheiros header. Claro, eles não foram instalados. Esse era o problema. Make não se queixou do ficheiros de cabeçalho em falta. Entao Eu não percebi que a opção --with-curl não fez nada (é, na verdade, o padrão na minha versão de git).

Fiz o seguinte para consertá-lo:

  1. Adicionei 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 de /usr/local (porque quero que a nova instalação viva lá).

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

  3. Procurei pelas pastas de inclusão que contêm curl e expat arquivos de cabeçalho, e então (porque eu tinha lido através configure) adicionou estes para o ambiente como assim:

    export CURLDIR=/usr/include 
    export EXPATDIR=/usr/include
    
  4. Ran configure com as seguintes opções, que, mais uma vez, foram descritas no próprio ficheiro configure, e foram também os valores por omissão, mas que se lixe:

    ./configure  --with-curl --with-expat
    
  5. E agora http trabalha com git através da minha firewall corporativa:

    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
    ...
    
 3
Author: steve98177, 2015-06-27 13:42:18
Isto funcionou comigo.
git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port
 3
Author: Vagner Nogueira, 2016-10-24 06:32:53
Isto não é um problema com o teu representante. É um problema com github (ou git). Ele falha para mim no git-1.6.0.1 no linux também. o Bug já foi reportado (por si, nada menos). Certifique-se de apagar os seus pastéis, eles já estão no google. Edit: deve ter sonhado, acho que você não pode apagá-los. Utilizar Gist em vez disso?
 1
Author: sethbc, 2008-09-24 19:40:19

$http_ Proxy é para http://github.com ... $https_ Proxy é para https://github.com...

 1
Author: jimagic, 2013-04-19 07:27:36

Para O Windows

Goto --> C:/Users/user_name/gitconfig

Actualizar o ficheiro gitconfig com os detalhes abaixo

[http]

[https]

proxy = https://your_proxy:your_port

[http]

proxy = http://your_proxy:your_port

Como verificar o seu proxy e número de porta?

Internet Explorer - > Settings - > Internet Options - > Connections - > LAN Settings

 1
Author: School Boy, 2016-02-02 08:50:06

Pode usar:

git config --add http.proxy http://user:password@proxy_host:proxy_port
 1
Author: montells, 2017-02-21 17:29:37

Utilizar proxicaínas

proxychains git pull ...

Update: proxicains is discontinued, use proxicains-ng instead.

 1
Author: fangxing, 2017-05-07 08:08:18

Defina a credencial Git.ajudante de wincred.

git config --global credential.helper wincred
Certifica-te que só há uma credencial.ajudante
git config -l

Se há mais de 1 e não está definido para wincred removê-lo.

git config --system --unset credential.helper

Agora define o 'proxy' sem senha.

git config --global http.proxy http://<YOUR WIN LOGIN NAME>@proxy:80

Verifique se todas as configurações que adicionou parecem boas....

git config --global -l
Agora podes ir!
 1
Author: Thor88, 2018-08-15 23:31:30
Contornei o proxy usando https... alguns proxies nem sequer verificam os 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
 0
Author: Rob Koch, 2014-04-14 13:17:28

As respostas acima funcionaram para mim quando o meu 'proxy' não precisa de autenticação. Se você estiver usando proxy, o que requer que você autentique, então você pode tentar CCProxy. Eu tenho um pequeno tutorial sobre como montá-lo aqui,

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

Fui capaz de empurrar, puxar, criar novos repos. Correu tudo bem. Certifique-se de fazer uma desinstalação limpa e reinstalar a nova versão se você está enfrentando problemas com Git como eu fiz.
 0
Author: Praveen, 2014-06-27 15:45:08

Como isto foi respondido por muitos, mas isto é apenas para Winodws utilizador que está por detrás do 'proxy' com o auth.

A reinstalação (falhou primeiro, 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:[email protected]:8080"

Se tiver algum valor especial na utilização do utilizador/Senha URL_ encode

 0
Author: Ravi Parekh, 2017-03-20 10:18:14

Como o @user2188765 já indicou, tente substituir o protocolo {[[0]} do repositório por http[s]://. Ver também esta resposta

 0
Author: DomTomCat, 2017-05-23 12:10:32