Tentar algo como git clone git://github.com/ry/node.git
não funcionará, resultará em:
Initialized empty Git repository in /home/robert/node/.git/
github.com[0: 207.97.227.239]: errno=Connection timed out
fatal: unable to connect a socket (Connection timed out)
No entanto, a clonagem por HTTP funciona bem. Até agora entendi que é um problema com o protocolo, mas estou tentando instalar o cloud9, que está exigindo o comando
git submodule update --init --recursive
que está tentando usar o protocolo git: // e está com falha. Existe uma maneira de mudar como esse comando funcionará ou algo assim?
git config --global url.https://.insteadOf git://
Respostas:
Se esse é um problema com o firewall bloqueando a porta git: protocol (9418), faça uma alteração mais persistente para não ter que se lembrar de emitir comandos sugeridos por outras postagens para cada repositório git.
A solução abaixo também funciona apenas para submódulos que também podem estar usando o protocolo git:
Como a mensagem git realmente não aponta imediatamente para a porta de bloqueio do firewall 9418, vamos tentar diagnosticar isso como o problema real.
Diagnosticando o problema
Referências: https://superuser.com/q/621870/203918 e https://unix.stackexchange.com/q/11756/57414
Existem várias ferramentas que podemos usar para determinar se o firewall está causando o nosso problema - use o que estiver instalado no seu sistema.
OK, agora determinamos que nossa porta git está sendo bloqueada por um firewall, o que podemos fazer? Leia :)
Reescrita básica de URL
O Git fornece uma maneira de reescrever URLs usando
git config
. Basta emitir o seguinte comando:Agora, como que por mágica, todos os comandos git farão uma substituição de
git://
parahttps://
Que mudanças este comando fez?
Dê uma olhada na sua configuração global usando:
Você verá a seguinte linha na saída:
Você pode ver como isso fica registrado, dando uma olhada em
~/.gitconfig
onde você deve ver agora que as duas linhas a seguir foram adicionadas:Quer mais controle?
Basta usar um URL mais completo / específico na substituição. Por exemplo, para ter apenas URLs do GitHub use https: // em vez de git: //, você pode usar algo como:
Você pode executar este comando várias vezes usando substituições diferentes. No entanto, no caso de um URL corresponder a várias substituições, a correspondência mais longa "vence". Apenas uma única substituição será feita por URL.
Alterações em todo o sistema para administradores de sistemas
Se você é um administrador de sistema Linux e não deseja que seus usuários passem pelas dificuldades acima, você pode fazer uma alteração rápida na configuração do git em todo o sistema.
Simplesmente edite ou adicione o seguinte conteúdo
/etc/gitconfig
e pronto, seus usuários não precisam se preocupar com nenhum dos itens acima:fonte
git config --global url."https://github".insteadOf git://github
.git config --global --unset url."https://".insteadOf
O Github também fornece acesso http (s), o que é muito menos provável de ser bloqueado pela sua empresa. Para dizer ao submódulo para usar isso, você pode fazer o seguinte:
Na verdade, é exatamente por isso que init e update são comandos separados - você pode iniciar, personalizar locais e atualizar.
update --init
é apenas um atalho para quando você não precisa personalizar nenhum URL.Para qualquer outra pessoa que depare com isso, é claro que você também pode usar um URL ssh (se sua empresa bloquear o git: //, mas não o ssh), mas nesse caso o OP presumivelmente não tem acesso SSH ao repositório remoto.
fonte
sed -i 's@git://github@https://github@' .git/config
.Outra opção que não envolve tocar na configuração do git é alterar as configurações do ssh para usar a porta 443 em vez da porta 22 normal.
Referência: Usando SSH pela porta HTTPS
Desse artigo:
Posteriormente, consegui git push com sucesso no Github. Em casa, você pode alterar a configuração do ssh da maneira que estava, se quiser.
fonte
Eu também estava tendo o mesmo problema por um tempo. Então tentei alterar a configuração do git usando o comando sugerido:
que infelizmente não fez o truque para mim . Eu ainda estava tendo o mesmo problema!
O que realmente resolveu meu problema, finalmente, é que redefini o URL remoto do meu repositório novamente usando o seguinte comando:
que era anteriormente assim:
Depois de definir o URL remoto usando em
https://
vez do[email protected]
problema foi resolvido para mim.fonte
Expandindo a resposta de Nathan acima, você também pode tentar o protocolo ssh se o firewall corporativo estiver interferindo no https. No meu caso, o firewall estava bloqueando o protocolo git, reemitindo certificados ssl para https e isso estava atrapalhando a minha vida, mesmo com a opção strict-ssl desativada. Você pode reescrever um URL semelhante para o ssh e criar um par / chave ssh conforme descrito no github .
Você também teria que ativar o ssh-agent para sua instalação do git.
fonte
é porque o endereço GIT para o servidor do nó mudou, você deve inserir agora:
clone git https://github.com/joyent/node
boa sorte
fonte
Introdução
Vou adicionar aqui minha própria abordagem ( que não é necessária se você tiver um repositório git acessível ao público que suporte https ).
Eu trabalho em uma empresa onde o repositório git é acessível apenas de dentro da empresa. Mas eu também trabalho em casa.
Como envio para o repositório da empresa a partir de casa?
Eu criei um repositório com uma pasta no meu google drive. Exceto para git e https, você pode incluir repositórios como caminhos.
Então, em vez de pressionar para a origem, pressiono para "gDrive". Isso faz com que a pasta seja sincronizada da minha estação de trabalho doméstica para o Google Drive e, em seguida, o computador do trabalho faz as alterações. Além disso, como às vezes os arquivos no diretório ".git" não são sincronizados, renomeio a pasta temporariamente de, por exemplo, "tronco" para "tronco2". Isso força os computadores domésticos e profissionais a serem 100% sincronizados com o Google Drive.
Em seguida, faço logon no meu computador de trabalho por meio do checkpoint-vpn remote (ou teamviewer) e envio minhas atualizações para o repositório work git.
Além disso, o processo funcionaria vice-versa para enviar para um repositório git fora da empresa bloqueada.
fonte