Erreur de transmission Github: échec du RPC; résultat = 22, code HTTP = 413


129

problème stupide avec Github en ce moment. J'ai une quantité décente de changements (~ 120 Mo de taille), lorsque j'essaye de pousser, voici ce qui se passe:

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

jai deja fait

git config http.postBuffer 524288000, donc cela ne semble pas être le problème. Qu'est ce que ça pourrait être?


3
Pour les futurs visiteurs, si vous obtenez HTTP code = 0, GitHub est en panne, comme hier.
Utilisateur de StackExchange

3
J'ai eu HTTP code = 0quand mon proxy bloquait. Mon proxy http fonctionne avec github, mais pas https pour mon proxy d'entreprise. Je pense que mon proxy HTTPS force NTLM, tandis que HTTP accepte BASIC. J'ai changé l'URL d'origine du dépôt de https à http et cela a fonctionné pour moi. git remote set-url origin http://github.com/GitUserName/GitRepoName.git
Motes

Réponses:


206

Si vous obtenez l'erreur 413, le problème ne vient pas de git mais de votre serveur Web . C'est votre serveur Web qui bloque les gros fichiers de téléchargement.

Solution pour nginx

Chargez simplement votre nginx.confet ajoutez client_max_body_size 50m;(en changeant la valeur en fonction de vos besoins) dans le bloc http.

Rechargez nginx pour accepter la nouvelle configuration en exécutant sudo service nginx reloadet essayez à nouveau de pousser votre commit sur http.

Solution pour Apache

Dans votre httpd.confadd LimitRequestBody 52428800(en modifiant la valeur en fonction de vos besoins) à l'intérieur d'un <Directory />bloc. En faisant cela, vous pouvez limiter la demande de tout le système de fichiers du serveur, juste un seul hôte virtuel ou un répertoire.

J'espère que ça aide.


1
50m ne me suffisaient pas, mais cela a résolu mon problème! Merci!
Kevin C.Krinke

Je devais le faire également sur un proxy nginx intermédiaire.
jperelli

2
Et si vous n'utilisez pas Nginx?
Katianie

toute solution pour l'installation omnibus gitlab ..? dernière version 12.1
shashwat

Après beaucoup de recherches, de jurons et de pleurs. (dans cet ordre) J'ai trouvé que le fichier de configuration intégré se trouvait à: /var/opt/gitlab/nginx/conf/gitlab-http.conf
kroolk

55

Je l'ai compris !!! Bien sûr, je le ferais juste après avoir frappé le poste!

J'avais le repo configuré pour utiliser l'url HTTPS, je l'ai changé pour l'adresse SSH, et tout a recommencé à fonctionner parfaitement.


51
Ce n'est pas la raison du problème. C'est juste une solution de contournement. Je veux savoir pourquoi il échoue sur https.
Steve Walsh

4
Pour moi, ssh n'est pas une option. Donc, au cas où vous êtes dans la même situation @ZincX, voyez ma réponse ci-dessus.
Tinou

2
C'est juste un travail autour. La réponse de Tinou devrait être la réponse acceptée.
Ben

1
comment avez-vous changé cela?
Dainius Kreivys

Beaucoup de gens n'ont probablement pas accès à leur serveur Web, donc cette information est très appréciée!
Matthew

38

la commande pour changer l'url distante (de https -> git @ ...) est quelque chose comme ça

git remote set-url origin git@github.com:GitUserName/GitRepoName.git

origine voici le nom de ma télécommande (do git remote et ce qui sort est votre origine).


2
Dans le cas de bitbucket (bouton «Cloner»), j'ai eu un problème lors de la suppression ssh://de ssh://git@<bitbucket-repo>:<port>/dir/to/project.gitAlors soyez prudent, les gars!
fightlight

9

J'ai eu le même problème mais j'utilisais un proxy inverse.

Alors je devais régler

client_max_body_size 50m; 

à l'intérieur des deux fichiers de configuration:

  • sur le serveur Web gitlab nginx (comme indiqué dans les réponses précédentes)
  • mais aussi sur le proxy inverse nginx hébergé sur le serveur dédié.

toute solution pour l'installation omnibus gitlab ..?
shashwat

peut-être jeter un oeil à omnibus / nginx conf: gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/…
grimabe

Je voulais vous remercier pour cette solution, j'avais exactement cette configuration.
tjeerdnet

6

J'avais déjà "HTTPS //" dans l'URL git mais j'ai rencontré cette erreur.

Tout ce que j'ai fait a été d'ajouter l'option -u avec push et cela a fonctionné.

git push -u origin master


4

Pour ceux qui utilisent IIS 7 pour héberger un git http/ httpsendpoint:

Vous devez augmenter votre uploadReadAheadSize.

Lancer le gestionnaire des services Internet (IIS)

  1. Développez le champ Serveur

  2. Développer les sites

  3. Sélectionnez le site pour lequel vous souhaitez effectuer la modification.

  4. Dans la section Fonctionnalités, double-cliquez Configuration Editor

  5. Sous Sectionsélectionnez:system.webServer > serverRuntime

  6. Modifiez la uploadReadAheadSizesection (la valeur doit être comprise entre 0et 2147483647.)

  7. Cliquez sur Apply

  8. Redémarrez le site Web


Pour redémarrer le site Web, j'ai sélectionné Site Web par défaut et sur le côté droit, sous Actions, il y a des boutons Arrêter et Démarrer .
jgoeders

Ce correctif était toujours requis dans IIS 10.
jgoeders

2

Si vous rencontrez ce problème tout en poussant des modifications de grande taille, exécutez la commande ci-dessous dans le terminal.

git config --global http.postBuffer 157286400

Voir ceci pour plus de détails.


1

L'erreur se produit dans 'libcurl', qui est le protocole sous-jacent pour le téléchargement https. La solution est de mettre à jour libcurl d'une manière ou d'une autre. Pour obtenir plus de détails sur l'erreur, définissez GIT_CURL_VERBOSE = 1

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

Signification de l'erreur, selon libcurl doc: CURLE_HTTP_RETURNED_ERROR (22)

Ceci est renvoyé si CURLOPT_FAILONERROR est défini sur TRUE et que le serveur HTTP renvoie un code d'erreur> = 400.

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


1

J'ai eu ce problème lorsque j'essaye de cloner un dépôt git sur une machine Linux.

l'URL suivante fonctionne pour moi dans Windows

http://swamy@git.swamy.com/scm/project/swamy-main.git

alors que l'URL suivante fonctionne dans la machine Linux et qu'elle a https dans l'URL

https://swamy@git.swamy.com/scm/project/swamy-main.git

1

J'ai eu cette erreur ( erreur: RPC a échoué; résultat = 22, code HTTP = 413 ) lorsque j'ai essayé de pousser mon commit initial vers un nouveau référentiel BitBucket. L'erreur s'est produite pour moi car le référentiel BitBucket n'avait pas de branche principale. Si vous utilisez SourceTree, vous pouvez créer une branche principale sur l'origine en appuyant sur le bouton Git Flow .


1

Utilisez-vous des liens https au lieu de liens ssh? Étant donné que le lien https est limité par la taille du téléchargement de HttpServer (comme Apache, Ngnix), il n'y a pas de telle restriction lors de l'utilisation de ssh.

Utilisez la méthode suivante pour basculer vers le lien ssh.

  1. Terminal ouvert.
  2. Basculez vers le répertoire de travail de votre projet.
  3. Obtenez le nom du référentiel distant
$ git remote -v
origin  https://github.com/[user_name]/[project_name].git (fetch)
origin  https://github.com/[user_name]/[project_name].git (push)
  1. Modifiez l'adresse git en lien ssh.
git remote set-url origin git@github.com:[user_name]/[project_name].git

Si vous déterminez le nom du référentiel distant, passez directement à l'étape 4. Vous pouvez maintenant effectuer l'opération push avec bonheur.



0

Le clone https de gists échoue (ssh fonctionne, voir ci-dessous):

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

Cela marche: git clone git@gist.github.com:123456.git


L'OP n'a pas posé de questions sur le clone, mais sur le push.
Owen Blacker

1
Eh bien, l'OP a posé des questions sur la communication avec github. Pourquoi j'ai répondu avec une réponse sur l'essentiel, je n'en ai aucune idée.
Jean Jordaan

Hah, assez juste :)
Owen Blacker

0

Fait face au même problème. Dans mon cas, il s'agissait de versions GIT non compatibles sur plusieurs utilisateurs qui accèdent (pull / push) au même projet.

Je viens de mettre à jour la version GIT et de mettre à jour le chemin sur les paramètres du studio Android et cela fonctionne très bien pour moi.

Éditer -

Git pour Windows (1.9.5) ayant des problèmes, la mise à jour de la même chose peut aider.


0

Il était confronté au même problème, mais il a été résolu en nettoyant le référentiel git (Nettoyer les fichiers non suivis en utilisant "git clean").


1
quand je fais git clean, il affiche cette erreur: fatal: clean.requireForce par défaut à true et ni -i, -n, ni -f ne sont donnés; refusant de nettoyer
Chandni

pour @Chandni et toute personne confrontée au même message d'erreur, git vous aide lui-même, essayez git clean -ipar exemple de démarrer en mode interactif.
voir

@seethrough - Thanks
Chandni

0

Besoin de changer l'URL distante en ssh ou https

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

ou

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

J'espère que cela aidera :)


0

quand j'ai utilisé l'url https pour pousser vers le maître distant, j'ai rencontré le même problème, je l'ai changé en adresse SSH, et tout a recommencé à fonctionner parfaitement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.