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.
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).
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
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!
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.
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.
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
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"
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
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!
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/
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.
- instale saca-rolhas , ou outras alternativas que queira.
Criar um authfile. O formato para
authfile
é:user_name:password
, euser_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
.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.
No Windows, se não quiser colocar a sua senha .gitconfig no texto simples, você pode usar
- Cntml (http://cntlm.sourceforge.net/)
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
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
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
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
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:
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# Define CURLDIR= / foo / bar se os seus ficheiros de cabeçalho e biblioteca estão em
# / foo/bar /include E/foo/bar / lib directories.
--with-curl
não fez nada (é, na verdade, o padrão na minha versão de git
).
Fiz o seguinte para consertá-lo:
-
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).
-
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
-
Procurei pelas pastas de inclusão que contêm
curl
eexpat
arquivos de cabeçalho, e então (porque eu tinha lido atravésconfigure
) adicionou estes para o ambiente como assim:export CURLDIR=/usr/include export EXPATDIR=/usr/include
-
Ran
configure
com as seguintes opções, que, mais uma vez, foram descritas no próprio ficheiroconfigure
, e foram também os valores por omissão, mas que se lixe:./configure --with-curl --with-expat
-
E agora
http
trabalha comgit
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 ...
git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port
$http_ Proxy é para http://github.com ... $https_ Proxy é para https://github.com...
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
Pode usar:
git config --add http.proxy http://user:password@proxy_host:proxy_port
Utilizar proxicaínas
proxychains git pull ...
Update: proxicains is discontinued, use proxicains-ng instead.
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!
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 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.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
Como o @user2188765 já indicou, tente substituir o protocolo {[[0]} do repositório por http[s]://
. Ver também esta resposta