136 votes

Git échoue lorsqu'on pousse un commit vers github

J'ai cloné un repo git que j'ai hébergé sur github sur mon ordinateur portable. J'ai pu pousser avec succès quelques commits vers github sans problème. Cependant, je reçois maintenant l'erreur suivante :

Compressing objects: 100% (792/792), done.
error: RPC failed; result=22, HTTP code = 411
Writing objects: 100% (1148/1148), 18.79 MiB | 13.81 MiB/s, done.
Total 1148 (delta 356), reused 944 (delta 214)

A partir de là, il se bloque et je dois finalement CTRL + C de retour au terminal.

0 votes

Pourquoi y a-t-il une erreur HTTP ? Ne poussez-vous pas sur github par SSH ?

0 votes

Pour clarifier : l'url dans le origin section de .git/config ne dit pas http, n'est-ce pas ?

0 votes

@Jefromi J'ai cloné mon repo privé en utilisant le lien http en lecture/écriture.

301voto

Will Points 3112

J'ai eu le même problème et je pense que cela a à voir avec la taille du repo (édité - ou la taille d'un fichier particulier) que vous essayez de pousser.

En gros, j'ai pu créer de nouveaux dépôts et les pousser vers github. Mais un dépôt existant ne fonctionne pas.

Le code d'erreur HTTP semble me conforter dans l'idée qu'il s'agit d'une erreur "Longueur requise". Il est peut-être trop grand pour être calculé ou trop grand pour le maximum. Qui sait ?

EDIT

J'ai trouvé que le problème peut être des fichiers de grande taille. J'avais une mise à jour qui ne voulait pas être poussée même si j'avais des poussées réussies jusqu'à ce point. Il n'y avait qu'un seul fichier dans le commit mais il s'est avéré être 1.6M

J'ai donc ajouté le changement de configuration suivant

git config http.postBuffer 524288000

Pour permettre jusqu'à la taille de fichier 500M et alors mon push a fonctionné. Il se peut que que c'était le problème initial avec la poussée d'un gros repo sur le protocole http protocole.

FIN EDIT

La façon dont j'ai pu le faire fonctionner (EDIT avant que je modifie postBuffer) était de tar up mon repo, de le copier sur une machine qui peut faire git via ssh, et de le pousser sur github. Ensuite, lorsque vous essayez de faire un push/pull à partir du serveur original, cela devrait fonctionner via https. (puisque c'est une quantité de données beaucoup plus petite qu'un push original).

0 votes

Ça a marché pour moi aussi, mais j'ai eu une erreur HTTP 501 au lieu du 411. Merci !

0 votes

Merci ! Cela a fonctionné, et a même accéléré le téléchargement. J'essayais de pousser un site web vers les nouveaux sites web de Windows Azure et ça échouait toujours.

24 votes

Y a-t-il un inconvénient à fixer cette valeur très haut ?

9voto

Nikita Pushkar Points 1045

Si cette commande ne vous aide pas

git config http.postBuffer 524288000

Essayez de changer la méthode ssh en https.

git remote -v
git remote rm origin 
git remote add origin https://github.com/username/project.git

4voto

VonC Points 414372

Cela ressemble à un problème de serveur (c'est-à-dire un problème de "GitHub").
Si vous regardez ce fil cela peut arriver lorsque le git-http-backend obtient un tas corrompu.(et comme ils qui vient d'être mis en place a support http intelligent ...)
Mais quelle que soit la cause réelle, elle peut aussi être liée à de récentes perturbation sporadique dans l'un des serveurs de fichiers GitHub .

Ce message d'erreur s'affiche-t-il toujours ? Parce que si c'est le cas :

  • vérifier la version locale de Git (et mettre à jour vers la dernière version)
  • le signaler comme un Bug de GitHub .

Remarque : le Support HTTP intelligent C'est un gros problème pour ceux d'entre nous qui se trouvent derrière un proxy de pare-feu d'entreprise basé sur l'authentification !

À partir de maintenant, si vous clonez un dépôt sur le site de http:// url et que vous utilisez un client Git version 1.6.6 ou supérieure, Git utilisera automatiquement le nouveau et meilleur mécanisme de transport.
Mais ce qui est encore plus étonnant, c'est que vous pouvez maintenant pousser sur ce protocole et cloner des dépôts privés également. Si vous accédez à un dépôt privé, ou si vous êtes un collaborateur et que vous voulez un accès push, vous pouvez indiquer votre nom d'utilisateur dans l'URL et Git vous demandera le mot de passe lorsque vous essayerez d'y accéder.

Les clients plus anciens reviendront également à l'ancienne méthode, moins efficace, de sorte que rien ne devrait être cassé - les clients plus récents devraient simplement mieux fonctionner.

Donc, encore une fois, assurez-vous de mettre à jour votre client Git d'abord.

0 votes

J'ai eu des problèmes similaires derrière un routeur ADSL sans fil (Livebox d'Orange) : impossible de publier ma clé SSH à l'adresse suivante github.com , pousser bloqué sur https... jusqu'à ce que j'utilise un accès internet alternatif.

0 votes

Le support Smart HTTP a réussi à me faire passer à travers le proxy de notre pare-feu alors que j'obtenais "error : RPC failed ; result=22, HTTP code = 0" lorsque j'essayais de pousser.

0 votes

@Boggin Oui, je confirme que smart http est généralement le choix préféré quand on est derrière un proxy. Le port standard http/https est (presque) toujours ouvert.

0voto

BananaAcid Points 279

J'ai essayé de pousser vers mon propre serveur bonobo-git hébergé, et je n'ai pas réalisé que le http.postbuffer signifiait le répertoire du projet ...

donc juste pour les autres confus :

Pourquoi ? Dans mon cas, j'avais de gros fichiers zip avec des actifs et quelques PSDs poussés aussi - trop gros pour le tampon je suppose.

Comment procéder http.postbuffer : exécutez cette commande dans le répertoire src de votre projet, à côté du dossier .git, et non sur le serveur.

attention, de gros fichiers temporaires (chunk) seront créés avec cette taille de tampon.

Remarque : vérifiez simplement vos fichiers les plus volumineux, puis définissez la mémoire tampon.

-2voto

apurv nerlekar Points 602

Le problème de pousser la plupart du temps est dû à la taille des fichiers qui doivent être poussés. J'ai essayé de pousser des bibliothèques d'une taille de seulement 2 mb, puis aussi le push donnait une erreur de RPC avec le résultat 7. La ligne est de 4 mbps et fonctionne bien. Quelques essais ultérieurs du push m'ont permis de réussir. Si une telle erreur survient, attendez quelques minutes et continuez à essayer.

J'ai également découvert qu'il y a des échecs de RPC si le github est en panne ou si le réseau est instable de leur côté.

Donc continuer à essayer après quelques intervalles est la seule option !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X