Git, fatal: a extremidade remota desligou inesperadamente

278

Quando eu tentei correr

git push origin master --force

Eu acabei de receber

Counting objects: 2649, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (1280/1280), done.
error: RPC failed; result=22, HTTP code = 413 | 116 KiB/s   
fatal: The remote end hung up unexpectedly
Writing objects: 100% (2504/2504), 449.61 MiB | 4.19 MiB/s, done.
Total 2504 (delta 1309), reused 2242 (delta 1216)
fatal: The remote end hung up unexpectedly
Everything up-to-date

Tem algo a ver com não ser seguro? Tentei criar uma chave pública como na resposta para Fatal: a extremidade remota desligou inesperadamente e a executou novamente, mas ainda não funciona. Na verdade, não estou usando a chave? Se sim, como eu o uso?

DanielLC
fonte
mostra a saída degit remote -v
CharlesB 6/13
1
possível duplicata de Git falha quando empurrando comprometer com GitHub
charlesb
13
O comando git config http.postBuffer 524288000 # funciona para mim #
Hari Das
se você error: could not lock config file .git/config: No such file or directoryver stackoverflow.com/a/32329453/827525
niksmac
1
Não consegui nenhuma das soluções sugeridas para o trabalho. Então eu tentei o GitKraken. É um dos poucos programas Git que não usa o git.exe. GitKraken poderia fazê-lo. Após o GitKraken enviar o repositório, eu poderia voltar ao git.exe e sincronizar sem problemas.
Lars PEHRSSON

Respostas:

83

Isso é semelhante a Como faço para que o github seja padronizado como ssh e não https para novos repositórios . Provavelmente vale a pena tentar mudar do protocolo http para ssh:

$ git remote add origin [email protected]:username/project.git
Vitalliuss
fonte
Por que não posso simplesmente mudar de http para https?
precisa saber é o seguinte
10
origem remota da adição remota do bash-3.2 $ git [email protected]: xxx / xx.git fatal: a origem remota já existe. PORQUE ?
almaruf
11
@ almaruf é porque o controle remoto originjá está lá e você está tentando substituí-lo. O git não permite isso. Então você deve primeiro fazer git remote rm origine tentar novamente. Funcionaria
Alfie
certifique-se de inicializar o projeto se é um novo clone fresco comgit init
Raul
você pode usar o protocolo git sobre ssh (que requer chaves SSH) ou o protocolo https que requer nome de usuário e senha através de um acesso pessoal simbólico - Eu prefiro o mais tarde
Raul
521

O problema é devido às configurações do buffer git / https. Para resolvê-lo (o Git falha ao pressionar commit no github )

git config http.postBuffer 524288000

E execute o comando novamente

Roman M
fonte
4
Preciso que o buffer seja superior a 500 MB - isso é possível? Não parece fazer diferença se eu fizer o número postBuffer mais alto ...
jowie
Obrigado pelo link - resolvi o problema dividindo o envio em partes menores. Se eu tiver um problema novamente, sei onde procurar!
jowie
17
Seria uma boa ideia usar isso com --global? Eu lido regularmente com grandes repositórios.
DaAwesomeP
2
@ shivam13juna nada é excluído da internet: :) web.archive.org/web/20170119225336/http://github.com/gitlabhq/…
Roman M
3
Eu executei o "git config http.postBuffer 524288000", mas ainda assim o problema não foi resolvido, continua dizendo o mesmo, o terminal remoto desligou inesperadamente
Narendra
80

Causa: o tamanho padrão da postagem do arquivo para o Git foi excedido.

Solução:

Navegue para repo.

Execute o seguinte comando para aumentar o buffer para 500 MB depois de navegar para o repositório:

git config http.postBuffer 524288000
Chinu
fonte
2
Formate seu código usando as tags de código. Explique também o que o código faz, porque este é um post antigo; faça sua resposta da melhor maneira possível.
Dan Grahn
31
Você também pode usar git config ssh.postBuffer 524288000se postar por ssh em vez de http.
11559 John
Para alguns casosgit config --global http.postBuffer 100000000
Job M
Eu recebo 'fatal: não em um diretório git' após a execução deste comando
ka3ak 5/02
@JohnM Esta opção parece não existir, não está documentada na página de manual
Ninguém
29

Você pode receber um erro como este

erro: não foi possível bloquear o arquivo de configuração .git / config: esse arquivo ou diretório não existe

isso é porque você não tem um local .git/config arquivo . Você pode fazê-lo funcionar por este comando

git config --global http.postBuffer 524288000

niksmac
fonte
Isso me ajudou ao tentar clone em um PC muito lento dentro cygwin - continuou a extremidade remota desligou - até que eu usei esse comando
Serup
Isso me ajudou a resolver o problema "fatal: a extremidade remota desligou no contato inicial".
precisa saber é o seguinte
15

Outras soluções não funcionaram no meu caso, fazer uma coleta de lixo corrigiu para mim:

git gc --aggressive

Shameen
fonte
21
Isso corrigiu o meu problema, mas também esmagou as alterações desanexadas do HEAD em um estado em que a fusão delas se tornou desagradável (tudo foi convertido em um ADD). Eu gostaria de ter pesquisado mais este antes de executá-lo.
MatrixManAtYrService
Como isso faz questão?
Annadate Piyush
9

Ao contrário de uma das outras respostas - tive o problema ao pressionar usando ssh - mudei para https e foi corrigido.

git remote remove origin
git remote add origin https://github..com/user/repo
git push --set-upstream origin master
MikeB
fonte
8

Este erro também pode ser causado por falta de permissões de gravação no repositório.


Meu caso concreto foi assim:

  1. Eu criei um repositório com o root usuário do meu servidor (via SSH).
  2. Instalei um serviço git e criei um gitusuário linux que deve gerenciar todas as ações relacionadas ao git.
  3. Naquela época, eu tinha esquecido que o repositório foi criado com o rootusuário em primeiro lugar, e o gitusuário simplesmente não tinha permissões de arquivo para gravar nada no repositório.
Loilo
fonte
4

Culpado (no meu caso):
uma rede de alta latência.

Esta não é uma resposta em si, mas mais uma observação que pode ajudar outras pessoas. Eu descobri que esse erro aparece ocasionalmente em redes de alta latência (eu tenho que usar uma antena parabólica para acesso à Internet, por exemplo). A velocidade da rede é boa, mas a latência pode ser alta. Nota: O problema existe apenas em certos cenários, mas ainda não determinei qual é o padrão.

Mitigação temporária:
troquei de rede - mudei para uma rede celular mais lenta, mas com menor latência (meu telefone era um ponto de acesso) - e o problema desapareceu. Observe que só posso fazer isso de forma intermitente porque a conectividade da minha célula também é intermitente. Além disso, o uso da largura de banda adiciona custos. Também tenho sorte de ter esta opção disponível para mim. Nem todo mundo faz.

Tenho certeza de que há alguma configuração em algum lugar que torna o git - ou ssh ou curl ou o que quer que seja o tempo limite primeiro - mais tolerante a essas redes, mas não sei o que é.

Um apelo aos desenvolvedores:
esses tipos de questões são um problema constante para as populações rurais. Pense em nós quando projetar seus sistemas, ferramentas e aplicativos. Obrigado.

t0dd
fonte
3

No nosso caso, o problema era um clone que gravou um .git/configarquivo que continha uma entrada de URL que era um método de acesso somente leitura. Alterar o URL do ://método para o @método corrigiu o problema.

Correr git remote -viluminou a questão alguns.

Frank P
fonte
3

Se você estiver usando o git para Windows (e provavelmente está, se estiver fazendo isso em uma máquina Windows), e nenhuma das outras correções aqui funcionou para você, tente acessar https://github.com/git-for- windows / git / releases e obtendo uma versão na versão 2.4.5 ou posterior. Corrigido isso para mim.

rrreee
fonte
3

Você provavelmente clonou o repositório dentro de um já existente. Para resolver o problema, basta clonar o repositório em outro diretório e replicar as alterações nesse novo diretório e executar o push.

Marcos Bahiense
fonte
temos um fluxo de trabalho beta ansível e a reconstrução do site causou exatamente isso, clonando o repositório em cima do outro. Uma coisa possível de corrigir, mas com um problema de git. Obrigado :-)
Alejandro Moreno
2

Outra adição, já que encontrei esse erro de uma maneira diferente e o Google me levou aqui.

Meu problema era uma incompatibilidade de caso; um camelCase e um não. Aparentemente, o GIT impede você de fazer isso sem dizer o porquê. Portanto, se suas ramificações forem diferentes do controle remoto apenas na capitalização, tente alterá-las para serem idênticas.

Consulte: Git: 'O mestre não pode ser resolvido para ramificar' após a mesclagem

Thomas
fonte
Eu pensei que incluí todas as informações relevantes - são causadas por uma incompatibilidade de caso. Eu adicionei uma frase para ser mais explícita, mas isso não é realmente sobre o link. Desculpe se isso não estava claro.
Thomas
2

Isso pode ocorrer após a atualização da plataforma OSX.

Abra o Terminal e navegue até a pasta .ssh e digite ssh-add -K ~/.ssh/id_rsa

cptstarling
fonte
2

PLESK Nginx e GIT Eu estava recebendo esse erro no plesk git e, enquanto empurrava um grande repositório com (quem sabe o que), ele me deu esse erro com o código HTTP 413 e observei o seguinte: O servidor era o Plesk e o nginx estava funcionando como apache2 então eu olhei para os logs e encontrei o erro nos logs do nginx

Seguiu este link para permitir que o plesk reconstrua a configuração com o upload de arquivos maiores.

Eu pulei a parte php do git

Depois desse git push funcionou sem erros.

Farrukh Subhani
fonte
1

Por acaso, tive o mesmo erro ao puxar.
Eu fiz o truque "http.postBuffer". Isso foi resolvido, mas quando eu queria enviar, encontrei o erro novamente.

O que resolveu meu problema:
1. Clonou-o em outra pasta com outra máquina virtual. (Linux).
2. Eu fiz minhas alterações.
3. Empurrei-o com a máquina virtual original onde inicialmente não consegui empurrá-lo. (Janelas)

nopara73
fonte
este não é um companheiro de solução!
Behrouz.M
2
Eu sei que essa não é uma solução ideal, mas resolveu o problema no meu caso. Ainda pode ser salva-vidas quando todas as outras respostas falham, como no meu caso.
nopara73
1

Eu recebi esse erro quando tive um par de chaves incorreto no .ssh. Adicionar o pubkey ao github (nas configurações) corrigiu esse problema para mim.

Michel Samia
fonte
1

Eu tenho o mesmo problema. Notei na página da web git que o URL do clone SSH tem a seguinte estrutura:

[email protected]:user/project.git

Eu poderia resolver meu problema apenas alterando o ":" por "/", da seguinte maneira:

[email protected]/user/project.git

Pode ser que isso possa ser útil.

David Romero
fonte
1

Parece quase inútil adicionar uma resposta, mas eu estava lutando contra isso há séculos quando finalmente descobri que era o Visual Studio Online que estava sofrendo uma interrupção esporádica. Isso ficou aparente quando o VS continuou solicitando creds e o site do VSO às vezes dava 500.

Counting objects: 138816, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (38049/38049), done.
error: unable to rewind rpc post data - try increasing http.postBuffer
error: RPC failed; curl 56 SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054
The remote end hung up unexpectedly/138816), 33.30 MiB | 3.00 KiB/s
Writing objects: 100% (138816/138816), 50.21 MiB | 3.00 KiB/s, done.
Total 138816 (delta 100197), reused 134574 (delta 96515)
fatal: The remote end hung up unexpectedly
Everything up-to-date

Defino meu buffer de postagem HTTP de volta para 2Mb depois, pois acho que ele funciona melhor com muitas postagens menores.

Lucas

Luke Puplett
fonte
1

Parece que pode ser uma das mil coisas.

Para mim, eu estava inicialmente pressionando o mestre e o desenvolvimento (o mestre não teve alterações) via SourceTree. Alterar isso para desenvolver apenas funcionou.

JakeSteam
fonte
1

Eu estava enfrentando um erro semelhante ao enviar um repositório grande, "fatal: a extremidade remota desligou inesperadamente", sem mais detalhes.

Depois de muita pesquisa, eis o que eu fiz:

  • O uso do SSH em vez do HTTPS não resolveu o problema.
  • Aumentar o http.postBuffer de forma incremental até um valor muito grande, ainda sem sorte.
  • Eu descobri que isso pode ser por causa de arquivos grandes no repositório (como este é um repositório recém-migrado do forforce), então recriei o repositório usando o LFS, definindo largeFileThreshold para 40m, o que reduziu bastante o tamanho do repositório (de 3.5G para 500 milhões). Eu pensei que isso resolveria o problema, mas, para minha surpresa, ainda enfrentava o mesmo erro.

Por fim, ocorreu-me que talvez eu esteja usando um cliente git mais antigo, pois não vi mensagens de erro adicionais. I atualizado cliente git a mais recente (2.20.1), e voila, o erro é ido!

Mahmoud Hanafy
fonte
Eu também tive esse problema exato (migrando do TFS). Atualizei da 2.19 para a 2.20 e ela foi corrigida, uma olhada superficial nas notas de versão não revelou qual poderia ter sido o problema.
George Richardson
Acabei de atualizar para o 2.20.1.windows.1 e ele ainda não me permite ir para o repositório remoto
Vidar
@Vidar Pode verificar se há arquivos grandes, o GitHub tem um limite estrito de 100 MB help.github.com/articles/what-is-my-disk-quota ; Dê uma olhada na seção "Revendo manualmente arquivos grandes em seu repositório" em confluence.atlassian.com/bitbucket/… ; a página em si é uma boa leitura.
Mahmoud Hanafy 12/02/19
@MahmoudHanafy - obrigado - era um parâmetro no web.config sobre o tamanho máximo do arquivo - aumente isso e o git se comporta e todos estão felizes! Não é o GitHub para mim, mas nosso próprio site privado Bonobo.Git.Server.
Vidar
0

Eu recebi esse erro quando tinha digitado meu nome de filial remota

javaProgrammer
fonte
0

Consegui solucionar esse problema usando o Git Shell.

Cada repositório no github.com fornece URLs HTTPS / SSH / Subversion que você pode usar para baixar usando o Shell, veja aqui: http://prntscr.com/8ydguv .
Com base nas mudanças recentes do GitHub, o SSH parece ser o melhor método.

Comando a ser usado no Shell:

git clone "URL of repo goes here w/ no quotes"
David
fonte
O que você quer dizer com "Git Shell"? Usando gitem um terminal?
Karl Richter
0

Faça isso para ver a chave que você está usando; ssh -vT [email protected]

Em seguida, verifique se em sua compilação você tem essa execução no início. eval "$ (ssh-agent -s)" ssh-add ~ / .ssh / id_rsa

ddtraveller
fonte
0

1) cd para o diretório do projeto

2) git status

3) git checkout -f HEAD

4) confirme o sucesso puxando o master novamente para garantir que você esteja atualizado se o seu repositório parecer incompleto

Isso funciona se você receber o erro em questão do Git do Visual Studio ao clonar um repo do Bitbucket

whyoz
fonte
0

Isso também pode acontecer se algum dos commit que você está enviando for malformado.

Eu (sem saber) tive um commit com um campo de email de autor malformado, mas tudo o que estava recebendo era essa vaga remote end hung upmensagem de erro. Eu era capaz de empurrar outros ramos não apenas este um ramo, então eu comecei a empurrar commits do "mau" um ramo de cada vez até que eu finalmente desembarcou em:

Pushing to [email protected]:directangular/unicorn.git
Counting objects: 100% (9/9), done.
Delta compression using up to 20 threads
Writing objects: 100% (5/5), 549 bytes | 549.00 KiB/s, done.
Total 5 (delta 4), reused 0 (delta 0)
remote: error: object 74c7584ff0b93591c19d3a3c19695889dd2274d2: badEmail: invalid author/committer line - bad email        
remote: fatal: fsck error in packed object        
error: remote unpack failed: index-pack abnormal exit
To github.com:directangular/unicorn.git
 ! [remote rejected]       pizzafeast -> pizzafeast (failed)
error: failed to push some refs to '[email protected]:directangular/unicorn.git'

Portanto, parece que o remote end hung up unexpectedlyerro está meio que "engolindo" a mensagem de erro real, que provavelmente é algum tipo de confirmação incorreta como eu tenho aqui.

Depois de corrigir o e-mail malformado, fui capaz de executar as tarefas corretamente.

mgalgs
fonte
0

Eu não acho que é uma boa idéia fazer isso, mas se você tiver backup em sua máquina .. pressione mais uma vez e tente clonar repo e remova .git do diretório antigo e mova .git da nova pasta clonada .. git está resolvido mas devido ao problema, alguns arquivos podem não ser carregados no git. Empurre novamente tudo do seu backup e, em seguida, puxe-o para o servidor ou a outra máquina em que ele é interrompido. Agora eu fiz o thid ... Funciona para mim .. e faça um backup do seu diretório antes de fazer isso.

E plz me corrija se eu estiver errado. Eu também não sei o que pode dar errado depois de fazer isso? Mas desta vez realmente funciona.

Sumit Rawat
fonte
0

meu problema (fatal: a extremidade remota desligou inesperadamente) foi resolvido verificando a permissão e o proprietário do repositório.

O proprietário dos arquivos de repositório git deve ser o usuário que você deseja empurrar / puxar / clonar.

Samir Sayyad
fonte
0

Nenhuma das respostas acima funcionou para mim, mas aqui está o que funcionou.

1) exclua .git/do seu projeto
2) clone o repositório remoto para algum novo local, como a área de trabalho. git clone https://github.com/foo/bar.git
3) mude .git/do novo local para o antigo
4) reenvie e envie suas alterações

Ben
fonte
0

O problema que me causou foram as configurações de rede: eu tenho uma placa wifi "Killer" que aparentemente atrapalha os pacotes de rede de uma maneira que SSH e SSL não gostam.

Para corrigir o problema, tive que entrar em "Killer Control Center", "Parameters" e desativar "Advanced Stream Detect" - os comandos git começaram a funcionar novamente instantaneamente.

Jean-Michaël Celerier
fonte