échec de git push: échec du RPC; résultat = 22, code HTTP = 411

127

Je n'ai qu'une seule succursale. Depuis quelques mois j'utilise

git push origin master

pour s'engager dans mon référentiel local. Hier soir, après avoir apporté quelques modifications mineures à mon référentiel local et essayé de pousser en utilisant la même commande, j'ai eu cette erreur:

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

J'ai cherché sur Google et trouvé des questions telles que celle-ci et celle-ci , mais aucune des réponses à ces questions ne résout mon problème.

La plupart des réponses suggèrent le problème de la tête détachée . Pourtant, je ne pense pas que ma tête soit détachée. Je ne pense pas non plus être sur la mauvaise branche (car je n'ai qu'une seule branche ...)

J'ai fait quelques expériences pour comprendre ce qui ne va pas, et voici les résultats que j'ai obtenus:

(1) Vient d'abord ma git statussortie

# 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) Lorsque je tape git reflog, je peux voir tous mes commits locaux, mais le référentiel distant ne sera tout simplement pas mis à jour.

(3) Quand je tape git branch -a, j'obtiens

* master
  remotes/origin/master

(4) Quand je tape git remote show origin, j'obtiens

* 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)

Je pense que la dernière ligne de sortie (le "fast-forwardable") est bizarre, mais je ne suis pas sûr de ce qui ne va pas ...

Zening Qu
la source
fast-forwardablesignifie que vous pouvez envoyer vos modifications locales à la branche distante, rien de criminel :-)
Maksym Polshcha

Réponses:

292

Si vous essayez de pousser un grand nombre de changements à un référentiel Git avec HTTP ou HTTPS, vous pouvez obtenir un message d'erreur comme erreur: RPC failed; result=22, HTTP code = 411. Cela est dû à une configuration par défaut de Git qui limite certaines opérations HTTP à 1 mégaoctet.

Pour modifier cette limite, exécutez dans votre référentiel local

git config http.postBuffer *bytes*

où octets est le nombre maximal d'octets autorisé. Par exemple:

git config http.postBuffer 524288000

Pour 500 Mo (merci @Hengjie)

Maksym Polshcha
la source
52
Un exemple est git config http.postBuffer 524288000pour 500 Mo.
Hengjie
9
Si vous utilisez gitlab, vous devrez peut-être également modifier votre configuration nginx ( /etc/nginx/sites-available/gitlab). Plus d'infos: github.com/gitlabhq/gitlabhq/issues/3099
DanielB
et si ça se voit RPC failed; result=22, HTTP code = 502?
Dipesh Raichana
2
Je reçois toujours l'erreur suivante git: RPC a échoué; result = 22, code HTTP = 504 dans bitbucket sur android studio
DJtiwari
23

Vous pouvez également le faire globalement -

git config --global http.postBuffer 524288000

Cela permettra à tous les dépôts locaux de pousser jusqu'à 500 Mo de données.

jdr0dn3y
la source
3

Aucune des solutions proposées n'a fonctionné pour nous. Nous avons dû passer à sshpour que cela fonctionne plutôt que la HTTPSsolution.

javaauthority
la source
2

Si vous utilisez TortoiseGit pour Windows, le moyen le plus simple est d'utiliser la configuration intégrée.

Dans un explorateur de fichiers, appuyez sur le bouton gauche de la souris, sélectionnez TortoiseGit -> Paramètres . Acceptez le message d'information. Désormais, vous pouvez choisir si vous souhaitez configurer la propriété uniquement pour le projet ou le système en cours. Pour la configuration à l'échelle du système, appuyez sur "modifier gitconfig dans tout le système" et ajoutez la ligne suivante à la section [http]:

postBuffer = 524288000

(si la section [http]n'existe pas, créez-la)

Errepunto
la source
1

J'ai résolu l'erreur 22 comme suit: Dans la commande "git clone", je n'ai PAS fourni l'utilisateur: mot de passe. Le clone a fonctionné, mais pas la poussée. Solution pour l'erreur 22: Modifiez .git / config l'url comme ceci: url = http: // user: pwd @ host / ... Ensuite, le push a fonctionné.

Rob Lassche
la source