Erro de envio do Github: RPC falhou; resultado = 22, código HTTP = 413

129

problema estúpido com o Github acontecendo agora. Tenho uma quantidade decente de alterações (~ 120 MB de tamanho). Quando tento enviar, é isso que acontece:

error: RPC failed; result=22, HTTP code = 413
fatal: The remote end hung up unexpectedly 
fatal: The remote end hung up unexpectedly

Já fiz

git config http.postBuffer 524288000, então esse não parece ser o problema. O que poderia ser?

Sneakyness
fonte
3
Para futuros visitantes, se você estiver recebendo HTTP code = 0, o GitHub está desativado, como ontem.
Usuário StackExchange
3
Recebi HTTP code = 0quando meu proxy estava bloqueando. Meu proxy http funciona com o github, mas o https não funciona no meu proxy corporativo. Eu acho que meu proxy HTTPS força NTLM, enquanto o HTTP aceita BASIC. Alterei o URL de origem do repositório de https para http e funcionou para mim. git remote set-url origin http://github.com/GitUserName/GitRepoName.git
Motes

Respostas:

206

Se você receber o erro 413, o problema não está no git, mas no seu servidor da web . É o seu servidor da web que está bloqueando grandes arquivos de upload.

Solução para nginx

Basta carregar nginx.confe adicionar client_max_body_size 50m;(alterando o valor de acordo com as suas necessidades) no bloco http.

Recarregue o nginx para aceitar a nova configuração executando sudo service nginx reloade tente novamente enviar seu commit por http.

Solução para Apache

No seu httpd.confadd LimitRequestBody 52428800(alterando o valor de acordo com as suas necessidades) dentro de um <Directory />bloco. Fazendo isso, você pode limitar a solicitação de todo o sistema de arquivos do servidor, apenas um único host virtual ou um diretório.

Eu espero que isso ajude.

Tinou
fonte
1
50m não foi suficiente para mim, mas isso resolveu o meu problema! Obrigado!
22413 Kevin Kevin Krinke
Eu tive que fazer isso também em um proxy nginx intermediário.
jperelli
2
E se você não estiver usando o Nginx?
Katianie
alguma solução para instalação do gitlab omnibus ..? versão mais recente 12.1
shashwat
Depois de muita procura, xingando e chorando. (Nessa ordem) eu achei que o arquivo de configuração embeded foi localizado em: /var/opt/gitlab/nginx/conf/gitlab-http.conf
kroolk
55

Eu descobri isso !!! É claro que eu faria logo depois de clicar no post!

Eu tinha o repositório definido para usar o URL HTTPS, mudei para o endereço SSH e tudo voltou a funcionar perfeitamente.

Sneakyness
fonte
51
Essa não é a razão do problema. Isso é apenas uma solução alternativa. Quero saber por que está falhando em https.
Steve Walsh
4
Para mim, o ssh não é uma opção. Portanto, caso você esteja na mesma situação @ZincX, veja minha resposta acima.
Tinou
2
Este é apenas um trabalho. A resposta de Tinou deve ser a resposta aceita.
Ben
1
como você mudou isso?
Dainius Kreivys
Muitas pessoas provavelmente não têm acesso ao seu servidor web, portanto essas informações são muito apreciadas!
Matthew Matthew
38

comando para alterar o URL remoto (de https -> git @ ...) é algo como isto

git remote set-url origin [email protected]:GitUserName/GitRepoName.git

origem aqui é o nome do meu controle remoto (git remote e o que sai é a sua origem).

kay am see
fonte
2
No caso de bitbucket (botão 'Clone'), tive um problema ao ser removido ssh://de ssh://git@<bitbucket-repo>:<port>/dir/to/project.gitEntão tenha cuidado, pessoal!
fightlight
9

Eu tive o mesmo problema, mas estava usando um proxy reverso.

Então eu tive que definir

client_max_body_size 50m; 

dentro dos dois arquivos de configuração:

  • no servidor da web gitlab nginx (como dito nas respostas anteriores)
  • mas também no proxy reverso nginx hospedado no servidor dedicado.
grimabe
fonte
alguma solução para instalação do gitlab omnibus ..?
Shashwat
talvez dar uma olhada em omnibus / nginx conf: gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/...
grimabe
Queria agradecer por esta solução, eu tinha exatamente essa configuração.
Tjeerdnet 15/10
6

Eu já tinha "HTTPS //" no URL do git e ainda enfrentava esse erro.

Tudo o que fiz foi adicionar a opção -u com push e funcionou.

git push -u origin master

Jayzcode
fonte
4

Para quem usa o IIS 7 para hospedar um git http/https endpoint:

Você precisa aumentar sua uploadReadAheadSize .

Iniciar o Gerenciador do Internet Information Services (IIS)

  1. Expanda o campo Servidor

  2. Expand Sites

  3. Selecione o site para o qual você deseja fazer a modificação.

  4. Na seção Recursos, clique duas vezes Configuration Editor

  5. Em Sectionselecionar:system.webServer > serverRuntime

  6. Modifique a uploadReadAheadSizeseção (O valor deve estar entre 0e 2147483647.)

  7. Clique Apply

  8. Reinicie o site

Markus Mauch
fonte
Para reiniciar o site, selecione Site padrão e, no lado direito, em Ações, existem os botões Parar e Iniciar .
jgoeders
Essa correção ainda era necessária no IIS 10.
jgoeders 22/10/2015
2

Se você está enfrentando esse problema enquanto pressiona alterações em tamanho grande, execute o comando abaixo no terminal.

git config --global http.postBuffer 157286400

Veja isso para mais detalhes.

vitthal
fonte
1

O erro ocorre em 'libcurl', que é o protocolo subjacente para upload https. A solução é atualizar de alguma forma a libcurl. Para obter mais detalhes sobre o erro, defina GIT_CURL_VERBOSE = 1

https://confluence.atlassian.com/pages/viewpage.action?pageId=306348908

Significado do erro, conforme o documento libcurl: CURLE_HTTP_RETURNED_ERROR (22)

Isso será retornado se CURLOPT_FAILONERROR estiver configurado como TRUE e o servidor HTTP retornar um código de erro que seja> = 400.

http://curl.haxx.se/libcurl/c/libcurl-errors.html

FractalSpace
fonte
1

Eu tenho esse problema quando tento clonar um repositório git na máquina Linux.

o seguinte URL está funcionando para mim no Windows

http://[email protected]/scm/project/swamy-main.git

enquanto o seguinte URL funciona na máquina Linux e possui https no URL

https://[email protected]/scm/project/swamy-main.git
Swamy
fonte
1

Eu tive esse erro ( erro: RPC falhou; resultado = 22, código HTTP = 413 ) quando tentei enviar minha confirmação inicial para um novo repositório BitBucket. O erro ocorreu para mim porque o repositório do BitBucket não tinha ramificação principal . Se você estiver usando o SourceTree, poderá criar uma ramificação principal na origem pressionando o botão Git Flow .

Ben
fonte
1

Você usa links https em vez de links ssh? Como o link https é limitado pelo tamanho do upload do HttpServer (como Apache, Ngnix), não há essa restrição ao usar o ssh.

Use o método a seguir para alternar para o link ssh.

  1. Terminal aberto.
  2. Alterne para o diretório de trabalho do seu projeto.
  3. Obter o nome do repositório remoto
$ git remote -v
origin  https://github.com/[user_name]/[project_name].git (fetch)
origin  https://github.com/[user_name]/[project_name].git (push)
  1. Modifique o endereço git para o link ssh.
git remote set-url origin [email protected]:[user_name]/[project_name].git

Se você determinar o nome do repositório remoto, prossiga diretamente para a etapa 4. Agora, você pode executar a operação de envio com satisfação.

Zhenjie Yan
fonte
0

O clone https de gists falha (o ssh funciona, veja abaixo):

12:00 jean@laptop:~/tmp$ GIT_CURL_VERBOSE=1 git clone https://gist.github.com/123456.git username
Initialized empty Git repository in /home/jean/tmp/username/.git/
* Couldn't find host gist.github.com in the .netrc file; using defaults
* About to connect() to gist.github.com port 443 (#0)
*   Trying 192.30.252.142... * Connected to gist.github.com (192.30.252.142) port 443 (#0)
* found 141 certificates in /etc/ssl/certs/ca-certificates.crt
*        server certificate verification OK
*        common name: *.github.com (matched)
*        server certificate expiration date OK
*        server certificate activation date OK
*        certificate public key: RSA
*        certificate version: #3
*        subject: C=US,ST=California,L=San Francisco,O=GitHub\, Inc.,CN=*.github.com
*        start date: Mon, 30 Apr 2012 00:00:00 GMT
*        expire date: Wed, 09 Jul 2014 12:00:00 GMT
*        issuer: C=US,O=DigiCert Inc,OU=www.digicert.com,CN=DigiCert High Assurance CA-3
*        compression: NULL
*        cipher: ARCFOUR-128
*        MAC: SHA1
> GET /123456.git/info/refs?service=git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept: */*
Pragma: no-cache

< HTTP/1.1 301 Moved Permanently
< Server: GitHub.com
< Date: Fri, 01 Nov 2013 05:00:51 GMT
< Content-Type: text/html
< Content-Length: 178
< Location: https://gist.github.com/gist/123456.git/info/refs?service=git-upload-pack
< Vary: Accept-Encoding
<
* Ignoring the response-body
* Expire cleared
* Connection #0 to host gist.github.com left intact
* Issue another request to this URL: 'https://gist.github.com/gist/123456.git/info/refs?service=git-upload-pack'
* Couldn't find host gist.github.com in the .netrc file; using defaults
* Re-using existing connection! (#0) with host gist.github.com
* Connected to gist.github.com (192.30.252.142) port 443 (#0)
> GET /gist/123456.git/info/refs?service=git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept: */*
Pragma: no-cache

< HTTP/1.1 200 OK
< Server: GitHub.com
< Date: Fri, 01 Nov 2013 05:00:52 GMT
< Content-Type: application/x-git-upload-pack-advertisement
< Transfer-Encoding: chunked
< Expires: Fri, 01 Jan 1980 00:00:00 GMT
< Pragma: no-cache
< Cache-Control: no-cache, max-age=0, must-revalidate
< Vary: Accept-Encoding
<
* Connection #0 to host gist.github.com left intact
* Couldn't find host gist.github.com in the .netrc file; using defaults
* About to connect() to gist.github.com port 443 (#0)
*   Trying 192.30.252.142... * connected
* Connected to gist.github.com (192.30.252.142) port 443 (#0)
* found 141 certificates in /etc/ssl/certs/ca-certificates.crt
* SSL re-using session ID
*        server certificate verification OK
*        common name: *.github.com (matched)
*        server certificate expiration date OK
*        server certificate activation date OK
*        certificate public key: RSA
*        certificate version: #3
*        subject: C=US,ST=California,L=San Francisco,O=GitHub\, Inc.,CN=*.github.com
*        start date: Mon, 30 Apr 2012 00:00:00 GMT
*        expire date: Wed, 09 Jul 2014 12:00:00 GMT
*        issuer: C=US,O=DigiCert Inc,OU=www.digicert.com,CN=DigiCert High Assurance CA-3
*        compression: NULL
*        cipher: ARCFOUR-128
*        MAC: SHA1
> POST /123456.git/git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept-Encoding: deflate, gzip
Content-Type: application/x-git-upload-pack-request
Accept: application/x-git-upload-pack-result
Content-Length: 116

< HTTP/1.1 301 Moved Permanently
< Server: GitHub.com
< Date: Fri, 01 Nov 2013 05:00:53 GMT
< Content-Type: text/html
< Content-Length: 178
< Location: https://gist.github.com/gist/123456.git/git-upload-pack
< Vary: Accept-Encoding
<
* Ignoring the response-body
* Connection #0 to host gist.github.com left intact
* Issue another request to this URL: 'https://gist.github.com/gist/123456.git/git-upload-pack'
* Violate RFC 2616/10.3.2 and switch from POST to GET
* Couldn't find host gist.github.com in the .netrc file; using defaults
* Re-using existing connection! (#0) with host gist.github.com
* Connected to gist.github.com (192.30.252.142) port 443 (#0)
> GET /gist/123456.git/git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept-Encoding: deflate, gzip
Content-Type: application/x-git-upload-pack-request
Accept: application/x-git-upload-pack-result

* The requested URL returned error: 400
* Closing connection #0
error: RPC failed; result=22, HTTP code = 400

Isso funciona: git clone [email protected]:123456.git

Jean Jordaan
fonte
O OP não perguntou sobre clone, mas sobre push.
Owen Blacker
1
Bem, o OP perguntou sobre a comunicação com o github. Por que eu respondi com uma resposta sobre dicas, eu não tenho idéia.
Jean Jordaan
Hah, justo :):
Owen Blacker
0

Estava enfrentando o mesmo problema. No meu caso, eram versões GIT incompatíveis entre vários usuários que estão acessando (pull / push) o mesmo projeto.

acabei de atualizar a versão do GIT e atualizei o caminho nas configurações do estúdio Android e está funcionando bem para mim.

Editar -

Git for Windows (1.9.5) com algum problema, atualizar o mesmo pode ajudar.

Vishal
fonte
0

Estava enfrentando o mesmo problema, no entanto, foi resolvido limpando o repositório git (Limpe arquivos não rastreados usando "git clean").

Darpan
fonte
1
quando eu faço o git clean, ele mostra o seguinte erro: fatal: clean.requireForce assume como padrão true e nem -i, -n, nem -f é fornecido; recusando-se a limpo
Chandni
para o @Chandni e qualquer pessoa que tenha a mesma mensagem de erro, o git ajuda a si mesmo, tente, git clean -ipor exemplo, iniciar no modo interativo.
seethrough
@seethrough - Thanks
Chandni
0

Precisa alterar o URL remoto para ssh ou https

git remote set-url origin [email protected]:laravel/laravel.git

ou

git remote set-url origin https://github.com/laravel/laravel.git

Espero que isso ajude :)

Vikash
fonte
0

quando usei o URL https para enviar para o mestre remoto, encontrei o mesmo problema, mudei para o endereço SSH e tudo voltou a funcionar perfeitamente.

lvjiujin
fonte