Git falha ao enviar commit ao github

130

Clonei um repositório Git que hospedei no github no meu laptop. Consegui enviar com êxito dois commit no github sem problemas. No entanto, agora eu recebo o seguinte erro:

Compressing objects: 100% (792/792), done.
error: RPC failed; result=22, HTTP code = 411
Writing objects: 100% (1148/1148), 18.79 MiB | 13.81 MiB/s, done.
Total 1148 (delta 356), reused 944 (delta 214)

A partir daqui ele simplesmente trava e eu finalmente ter a CTRL+ Cde volta para o terminal.

Stephen Melvin
fonte
Por que existe um erro HTTP? Você não pressiona para o github através do SSH?
Página
Para esclarecer: o URL na originseção de .git/confignão diz http, não é?
Cascabel
@Jefromi Clonei meu repositório particular usando o link http de leitura / gravação.
Stephen Melvin
Não, diz https. Isso é estranho, porque eu fui capaz de fazer dois empurrões antes da falha.
Stephen Melvin

Respostas:

292

Eu tive o mesmo problema e acredito que tem a ver com o tamanho do repositório (editado ou o tamanho de um arquivo específico) que você está tentando enviar.

Basicamente, eu fui capaz de criar novos repositórios e empurrá-los para o github. Mas um existente não funcionaria.

O código de erro HTTP parece fazer o backup, é um erro 'Comprimento Necessário'. Portanto, talvez seja muito grande para calcular ou ser melhor que o valor máximo. Quem sabe.

EDITAR

Descobri que o problema pode ser arquivos grandes. Eu tive uma atualização que não seria enviada, apesar de ter sido bem-sucedida nesse ponto. Havia apenas um arquivo no commit, mas era de 1,6 milhão

Então eu adicionei a seguinte alteração de configuração

git config http.postBuffer 524288000

Para permitir até o tamanho de arquivo 500M e, em seguida, meu envio funcionou. Pode ter sido que esse foi o problema inicialmente com o envio de um grande repositório ao longo do protocolo http.

EDIT FIM

a maneira que eu consegui que funcionasse (EDIT antes de modificar o postBuffer) era tar meu repositório, copiá-lo para uma máquina que pode executar git sobre ssh e enviá-lo ao github. Então, quando você tenta fazer um push / pull do servidor original, ele deve funcionar em https. (já que é uma quantidade muito menor de dados do que um envio original).

Espero que isto ajude.

Vai
fonte
Também funcionou para mim, apesar de eu ter um erro HTTP 501 em vez do 411. Obrigado!
Emaad Ahmed Manzoor
Obrigado! isso funcionou e até agilizou o upload. Estava tentando enviar um site para os novos sites do Windows Azure e continuava falhando.
Jake
23
Existe uma desvantagem em apenas definir esse valor muito alto?
snogglethorpe
@snogglethorpe Potencialmente: "Transfer-Encoding: chunked é usado para evitar a criação local de um grande pacote de arquivos". Se você definir o valor como algo enorme, poderá gerar grandes arquivos de pacote ao tentar enviar por push. Nem todos os sistemas de arquivos lidam bem com arquivos enormes e podem não ser eficientemente removidos. Você pode ver esses arquivos em .git / objects / pack.
amigos estão
Alterar a opção http.postBufferé mais desnecessário do que prejudicial, mas há um efeito colateral negativo: aumentá-la acima do padrão pode aumentar a latência para pushes maiores (já que o cliente armazenará em buffer a solicitação HTTP em pedaços maiores).
Swatantra Kumar
8

Se este comando não ajudar

git config http.postBuffer 524288000

Tente alterar o método ssh para https

git remote -v
git remote rm origin 
git remote add origin https://github.com/username/project.git
Nikita Pushkar
fonte
4

Parece um problema de servidor (ou seja, um problema "GitHub").
Se você olhar para esse segmento , isso pode acontecer quando o git-http-backendheap é corrompido. (E como eles colocam em prática um suporte http inteligente ...)
Mas, seja qual for a causa real, também pode estar relacionada a uma interrupção esporádica recente em um dos servidores de arquivos GitHub .

Você ainda vê esta mensagem de erro? Porque se você fizer:

  • verifique sua versão local do Git (e atualize para a mais recente)
  • relate isso como um bug do GitHub .

Nota: o Smart HTTP Support é um grande negócio para nós, atrás de um proxy de firewall corporativo autenticado!

A partir de agora, se você clonar um repositório pela http://URL e estiver usando uma versão 1.6.6 ou superior do cliente Git, o Git usará automaticamente o mecanismo de transporte melhor e mais novo.
Ainda mais surpreendente, no entanto, é que agora você pode empurrar esse protocolo e clonar repositórios privados também. Se você acessa um repositório particular ou é um colaborador e deseja acesso por push, você pode colocar seu nome de usuário no URL e o Git solicitará a senha quando você tentar acessá-lo.

Os clientes mais antigos também retornam à maneira mais antiga e menos eficiente, para que nada ocorra - apenas os clientes mais novos devem funcionar melhor.

Então, novamente, certifique-se de atualizar seu cliente Git primeiro.

VonC
fonte
Tive problemas semelhantes por trás de um roteador sem fio ADSL (French Orange Livebox): impossível publicar minha chave SSH no github.com , empurre preso por https ... até usar um acesso alternativo à Internet.
Yves Martin
O Suporte HTTP Inteligente conseguiu acessar meu proxy de firewall quando recebi "erro: falha de RPC; resultado = 22, código HTTP = 0" quando tentei enviar por push.
Boggin
@ Boggin Sim, confirmo que o http inteligente geralmente é a escolha preferida quando alguém está atrás de um proxy. A porta http / https padrão é (quase) sempre aberta.
VonC
0

O envio da GUI do Git em vez do Bash funciona para mim.

Vitaly Leskiv
fonte
0

Tentei enviar para o meu próprio servidor bonobo-git hospedado e não percebi que o http.postbuffer significava o diretório do projeto ...

então apenas para outros confusos:

porque? No meu caso, eu tinha grandes arquivos zip com recursos e alguns PSDs enviados também - muito grandes para o buffer, eu acho.

Como fazer isso http.postbuffer: execute esse comando no diretório src do projeto, próximo à pasta .git, não no servidor.

esteja ciente, arquivos grandes de temperatura (pedaço) serão criados com esse tamanho de buffer.

Nota: Apenas verifique seus arquivos maiores e defina o buffer.

BananaAcid
fonte
-2

O problema a ser enviado principalmente é o tamanho dos arquivos que precisam ser enviados. Eu estava tentando enviar algumas bibliotecas apenas de tamanho 2 mb, e também o envio estava dando erro de RPC com o resultado 7. A linha é de 4 mbps e está funcionando bem. Algumas tentativas subseqüentes ao impulso me deram sucesso. Se esse erro ocorrer, aguarde alguns minutos e continue tentando.

Eu também descobri que existem algumas falhas de RPC se o github estiver inoperante ou estiver obtendo uma rede instável ao seu lado.

Portanto, continuar tentando após alguns intervalos é a única opção!

Apurv Nerlekar
fonte
-2

nesses casos, você pode tentar o ssh se o https estiver bloqueado.

Além disso, você pode tentar aumentar o tamanho do buffer para uma figura astronômica, para que você não precise mais se preocupar com o tamanho do buffer git config http.postBuffer 100000000

RahulMohan Kolakandy
fonte