web-dev-qa-db-fra.com

Echec de Git Push - sortie anormale des objets de décompression

J'utilise un référentiel Git distant. J'ai validé avec succès mes fichiers et maintenant j'essaieTo Poussez-le vers le haut pour diffuser.

L'opération échoue avec ce message:

git.exe Push --progress  "Origin" master:master

error: unpack failed: unpack-objects abnormal exit
error: RPC failed; result=18, HTTP code = 200

J'utilise le client TortoiseGit sous Windows 7.

Pourquoi est-ce que je reçois ce message? comment se remettre de cet état?

31
vlcik

Selon this article git repack remote/Origin/master pourrait vous aider si votre référentiel local était corrompu. Pour vérifier que vous pouvez essayer de cloner votre référentiel distant dans un nouveau répertoire et tester Push à partir de celui-ci.

19
KL-7

Si votre dépôt git est auto-hébergé, vérifiez les droits du système de fichiers sur le répertoire git distant. Si cela est corrompu, il est possible que votre serveur git ne dispose tout simplement pas de droits. 

Par exemple, j'héberge mon propre système gitosis sur un serveur Ubuntu. Lorsque je crée le référentiel git sur le serveur, j'exécute Sudo git init --bare <repo name>. Je dois ensuite exécuter Sudo chgrp -R gitosis <repo name> && Sudo chown -R gitosis <repo name>.

35
sean_m

Cela se produit également lorsque la télécommande n'a plus d'espace disponible. Essayez de libérer de l'espace.

8
surfer190

J'ai rencontré ce problème lorsque j'ai configuré un nouveau serveur distant et que j'ai créé le dossier git repo/dossiers distant avec mon utilisateur root (plutôt que mon compte d'utilisateur personnel). Problème résolu en supprimant les dépôts git et en les refaisant avec mon compte personnel. tout fonctionne comme prévu maintenant.

1
wkd

Vérifiez les autorisations sur le référentiel distant/Origin. Sont-ils accessibles en écriture à l'utilisateur git? Sinon, vous obtiendrez cette erreur. Quelque chose comme:

chown git_user.git_user -R /path/to/repo/your_funky_repo

devrait faire l'affaire sur les systèmes * nix. Si votre télécommande est sous Windows, je suis sûr qu'il y a quelque chose d'équivalent que vous pourriez exécuter.

1
Sardathrion

J'ai réussi à le pousser avec "git Push —no-thin Origin HEAD"

Parfois, lorsque nous exécutons git Push to Push une nouvelle branche dans un référentiel distant, celle-ci est bloquée par le référentiel distant.

Peut-être que nous n'avons pas le permissions approprié. Cependant, lorsque j'ajoute le paramètre --no-thin à git Push, je peux le pousser.

Toutefois, cette commande peut être affectée par différents niveaux d'autorisations. Par conséquent, rien ne garantit qu'elle sera poussée. Mais j'ai réussi avec cette poussée.

0
hao wangg

Sous Windows, le seul correctif qui a fonctionné pour moi a été de supprimer les lignes suivantes de mon fichier .gitconfig:

[credential]
helper = !'C:\\Users\\YourNameHere\\AppData\\Roaming\\GitCredStore\\git-credential-winstore.exe'

Une fois que j'ai fait cela, j'ai poussé manuellement une fois (avec succès), puis ajouté les lignes ci-dessus à .gitconfig, et tout a fonctionné.

0
Noah Heldman

Dans mon cas, le dépôt distant était un clone peu profond. Je poussais un commit de fusion qui, apparemment, utilisait des commit datés avant le premier commit du peu profond repo. 

Pour résoudre ce problème, vous devez libérer la télécommande: git fetch --unshallow

0
Okneloper

Sur mon serveur (gitlab), il me fallait d’abord chown -R git: git repositories /, mais git repack ne fonctionnait pas. Le problème a été résolu lorsque j'ai utilisé scp pour copier le fichier objet de mon dépôt local sur le serveur:

    scp .git/objects/0d/449dd91d8c20c1820d1284371b28637e08a0f3 root@server:/home/git/repositories/my/project.git/objects/0d/
0
PHZ.fi-Pharazon

Vérifiez également si votre disque n'est pas plein. J'ai rencontré le même problème sur l'un de mes VPS il y a quelques minutes.

0
JakubKnejzlik

Si vous utilisez une URL HTTP, vous ne pouvez pas transmettre de données via HTTP. HTTP est un accès en lecture seule. Utilisez ssh à la place.

Faites git remote -v pour vérifier si votre URL de référentiel est HTTP . Vous pouvez modifier cette URL en procédant de la sorte git remote set-url Origin ssh:user@server/dir/project.git

Après cela, vous pouvez pousser!

0
zatenzu