432 votes

Git: "Objet lâche corrompu"

Chaque fois que je tire de ma télécommande, j’obtiens l’erreur suivante sur la compression. Quand je lance la compression manuelle, j’obtiens la même chose :

Est-ce que quelqu'un sait, ce qui à faire à ce sujet ?

Chat-fichier, j’obtiens ceci :

Et de fsck git, j’obtiens ceci (je ne sais si elle est effectivement liée) :

Quelqu'un peut-il m’aider à déchiffrer cela ?

461voto

cubic lettuce Points 756

J'ai eu le même problème (je ne sais pas pourquoi), et je voulais garder mon local (unpushed et/ou non) des modifications sur certains cloné dépôt distant. Les étapes suivantes ont été couronnées de succès dans mon cas, exécuté dans le répertoire parent du répertoire git (git dossier avec le nom "foo"):

  1. [ créer une sauvegarde de la corruption répertoire: cp -R foo foo-backup ]
  2. clone de nouveau le dépôt distant vers un nouveau répertoire: git clone git@www.mydomain.de:foo foo-newclone
  3. supprimer la corruption .git sous-répertoire: rm -rf foo/.git
  4. déplacer le nouveau cloné .git sous-répertoire dans foo: mv foo-newclone/.git foo
  5. supprimer le reste de la temporaire de nouveau clone: rm -rf foo-newclone

Maintenant foo a son origine .git sous-répertoire de retour, mais tous les changements locaux sont toujours là. git status, de commettre, tirer, pousser, etc. travailler à nouveau comme ils le devraient.

336voto

user1055643 Points 323

Votre meilleur pari est probablement simplement re-copier depuis le repo distant (c’est à dire github ou autre). Enregistrer toute modification des fichiers locaux manuellement (copier quelque part). Puis faire à partir de la racine de votre arborescence de travail :

puis copiez vos fichiers sauvegardés en arrière dans l’arborescence de travail, validation, etc..

68voto

Adam Dymitruk Points 34999

on dirait que vous avez un mauvais arbre de l'objet. Vous aurez besoin d'obtenir l'objet de quelqu'un d'autre. J'espère qu'ils ont une version correct.

Vous pouvez effectivement reconstruire si vous ne pouvez pas trouver une version valide de quelqu'un d'autre en devinant ce que les fichiers doivent être là. Vous voudrez peut-être voir si la date de fois des objets de correspondance. Ceux-ci pourraient être liées à des gouttes. Vous pourriez en déduire la structure de l'objet de l'arborescence à partir de ces objets.

Jetez un oeil à Scott Chacon Git du Screencasts concernant git internes. Cela va vous montrer comment git fonctionne sous le capot et la façon de faire ce travail de détective si vous êtes vraiment coincé et ne peut pas obtenir l'objet de quelqu'un d'autre.

14voto

Arthur Points 433

Essayez

Cela a fonctionné pour moi. Il cachettes quoi que ce soit, vous n’avez pas commis et qu’il a obtenu contourne le problème.

10voto

Uwe Kleine-König Points 1020

L’arborescence de la git contient un document utile sur la gestion de ce type d’erreur : howto/récupérer-corrompu-blob-lettres.txt

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