push do git falha: falha de RPC; resultado = 22, código HTTP = 411

127

Eu tenho apenas um ramo. Por alguns meses eu tenho usado

git push origin master

comprometer-se com meu repositório local. Ontem à noite, depois que fiz algumas pequenas alterações no meu repositório local e tentei usar o mesmo comando, recebi este erro:

error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

Pesquisei no Google e encontrei perguntas como esta e esta , mas nenhuma das respostas para essas perguntas resolve meu problema.

A maioria das respostas sugere o problema da cabeça separada . No entanto, não acho que minha cabeça esteja desapegada. Também não acho que estou no ramo errado (como só tenho um ramo ...)

Fiz algumas experiências para descobrir o que há de errado, e aqui estão os resultados que obtive:

(1) Primeiro vem a minha git statussaída

# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# egal.aux
# egal.blg
# egal.out
# egal.pdf
# egalcar.aux
# egalcar.blg
# egalcar.pdf
nothing added to commit but untracked files present (use "git add" to track)

(2) Quando digito git reflog, posso ver todos os meus commits locais, mas o repositório remoto simplesmente não é atualizado.

(3) Quando digito git branch -a, recebo

* master
  remotes/origin/master

(4) Quando digito git remote show origin, recebo

* remote origin
  Fetch URL: http://github.com/CherryQu921/egaldoc_en
  Push  URL: http://github.com/CherryQu921/egaldoc_en
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)

Eu acho que a última linha de saída (o "avanço rápido") é estranha, mas não tenho certeza do que está errado ...

Zening Qu
fonte
fast-forwardablesignifica que você pode empurrar suas alterações locais para o ramo remoto, nada de criminoso :-)
Maksym Polshcha

Respostas:

292

Se você tentar empurrar um grande conjunto de alterações para um repositório Git com HTTP ou HTTPS, você pode receber uma mensagem de erro como erro: RPC failed; result=22, HTTP code = 411. Isso é causado por um padrão de configuração do Git que limita certas operações HTTP a 1 megabyte.

Para alterar esse limite, execute no seu repositório local

git config http.postBuffer *bytes*

onde bytes é o número máximo de bytes permitido. Por exemplo:

git config http.postBuffer 524288000

Por 500MB (obrigado @Hengjie)

Maksym Polshcha
fonte
52
Um exemplo é git config http.postBuffer 524288000para 500 MB.
Hengjie
9
Se você estiver usando o gitlab, pode ser necessário alterar também a sua configuração do nginx ( /etc/nginx/sites-available/gitlab). Mais informações: github.com/gitlabhq/gitlabhq/issues/3099
DanielB
e se aparecer RPC failed; result=22, HTTP code = 502?
Dipesh Raichana
2
Ainda estou recebendo o seguinte erro git: RPC falhou; resultado = 22, código HTTP = 504 no bitbucket no android studio
DJtiwari 3/15
23

Você também pode fazer isso globalmente -

git config --global http.postBuffer 524288000

Isso permitirá que todos os repositórios locais enviem até 500 MB de dados.

jdr0dn3y
fonte
3

Nenhuma das soluções fornecidas funcionou para nós. Tivemos que mudar para sshfazer isso funcionar em vez da HTTPSsolução.

javaauthority
fonte
2

Se você estiver usando o TortoiseGit for Windows, a maneira mais fácil é usar a configuração integrada.

No explorador de arquivos, pressione o botão esquerdo do mouse, selecione TortoiseGit -> Configurações . Aceite a mensagem informativa. Agora, você pode escolher se deseja configurar a propriedade apenas para o projeto ou sistema atual em branco. Para configuração em todo o sistema, pressione "editar systemit gitconfig" e adicione a próxima linha à seção [http]:

postBuffer = 524288000

(se a seção [http]não existir, crie-a)

Errepunto
fonte
1

Resolvi o erro 22 da seguinte maneira: No comando "git clone", NÃO forneço ao usuário: senha. O clone funcionou, mas não o empurrão. Solução para o erro 22: Modifique .git / config do URL da seguinte forma: url = http: // user: pwd @ host / ... Então, o push funcionou.

Rob Lassche
fonte