Git push erreur: fichier objet est vide/en vrac objet est endommagé
J'ai été de tenter d'effectuer un git commit avec Git Gui. J'ai mis en scène un certain nombre de fichiers, et puis mon ordinateur soudainement arrêté en raison d'une batterie faible. Je l'ai branché en, se tourna sur le dos, et engage les fichiers que je voulais. Ensuite, j'ai couru git push
, comme je l'ai fait un million de fois avant sans aucun problème, et cette fois j'ai eu l'erreur suivante:
Counting objects: 8, done.
error: object file .git/objects/b5/60c934f6bad40f4f246973afc0139ed91a2d32 is empty
Compressing objects: 100% (4/4), done.
error: object file .git/objects/b5/60c934f6bad40f4f246973afc0139ed91a2d32 is empty
fatal: loose object b560c934f6bad40f4f246973afc0139ed91a2d32 (stored in .git/objects/b5/60c934f6bad40f4f246973afc0139ed91a2d32) is corrupt
error: failed to push some refs to '[email protected]:joemorano/app.git'
- Ce que cela pourrait avoir été causé par l'ordinateur de s'éteindre, avant que je puisse effectuer le premier commit?
Droit avant de tout ce qui s'est passé, j'ai apparemment endommagé la production de la version de mon application en cours d'exécution bundle install
en tant que root sur mon serveur, et maintenant tout sur le serveur est foiré, mais je ne vois pas comment cela pourrait influer sur la version locale. Je n'ai jamais fait git pull
ou quelque chose comme ça.
Quelqu'un rencontre cette erreur avant?
OriginalL'auteur Joe Morano | 2016-05-19
Vous devez vous connecter pour publier un commentaire.
Certainement, oui.
Réparation corrompu dépôt git
Voir aussi: Comment fixer corrompu dépôt git?
Dans ce cas, puisque vous avez (sans doute) ont un non-corruption de sauvegarde sur bitbucket, j'aimerais commencer par clonage qu'une nouvelle (bonne) clone, puis voir si je pouvais récupérer toute l'intermédiaire s'engage et les fichiers à partir de l'existant (mauvais) clone et/ou de son travail-arbre, les mettre dans la nouvelle (bonne) clone. Une fois que vous avez récupéré tout ce qui est récupérable à partir de la bad clone, vous pouvez l'abandonner ou de le supprimer. (En fonction de votre ordinateur et de son système de fichiers, la vérification et la réparation d'outils, vous pouvez l'exécuter aussi bien ceux, peut-être avant de faire quelque chose d'autre.)
Git est mince (bien, assez épais) wrapper autour d'un objet-fichier de base de données système. Les erreurs que vous voyez sont en vous disant que la base de données est endommagé. Sélection d'une livraison antérieure des feuilles de la base de données corrompue, ce qui n'est pas une bonne idée, même si temporairement il vous donne un travail utile de l'arbre. C'est comme coller un sparadrap sur après l'obtention d'une profonde blessure à l'arme blanche: amende pour vous rendre à un vrai médecin, mais ne guérit pas la maladie, et toute infection pourrait se propager. (Cette analogie tombe à l'eau si vous poussez trop dur, mais l'idée générale est d'éviter de laisser des bombes à retardement de coutil.)
Oh, c'est la base de données qui est le problème? Dans ce cas, que si j'efface et repeupler la base de données?
C'est ce que re-clonage permettrait de le faire. (Si vous voulez préserver votre travail à l'arbre, faire le clone ailleurs, alors
mv .git
de l'arbre etmv
le corrigé.git
pour la faire glisser en place, par exemple.)Oui, c'est pourquoi je suis en train de vous dire de regarder les deux autres questions (vous l'avez demandé, "toute Personne qui rencontre cette erreur avant?", ce sont deux de ces "n'importe qui"s) et leurs réponses, et à envisager une légèrement alternative plus facile aussi longtemps que vous avez une bonne copie de sauvegarde de votre référentiel (c'est à dire, la base de données de Git).
OriginalL'auteur torek
Étape 1: Faire une copie de sauvegarde .git (en fait, je fais cela dans entre chaque étape qui change quelque chose, mais avec une nouvelle copie de nom, par exemple .git-vieille-1, .git-vieille-2, etc.):
Étape 2: Exécuter
, vous obtiendrez ce message d'erreur
Par exemple:
erreur: le fichier de l'objet .git/objects/0A/dsdadadadaaeer4r3434343434334f est vide
Étape 3: Retirez le vide au-dessus de fichier c'est dans votre
.git/objects/
dossier. Continuer à supprimer des fichiers vides.Étape 4: Après la suppression de tous les fichiers vides, exécutez maintenant
Étape 5: Essayez de git reflog. Échouer parce que la TÊTE est cassée.
Étape 6: récupérer Manuellement le reflog:
Étape 7: veuillez Noter qu'à partir de l'Étape 6, nous avons appris que la TÊTE est actuellement en pointant à la dernière validation. Donc, nous allons essayer de regarder le parent s'engager:
Étape 8: Alors maintenant, nous avons besoin de point de la TÊTE à commettre-id
Espère que cela fonctionnera pour vous.
J'ai mis à jour ma réponse. Jetez un coup d'oeil.
Laissez-moi savoir si vous en avez n'importe quelle question.
Merci, travaillé. 🙂 Je n'ai
git update-ref HEAD origin/thebranch
après la suppression de l'objet endommagé. Il y avait beaucoup, j'ai été un peu effrayé, il y aurait des centaines, ou la totalité d'entre eux, et il n'y a pas de visibilité (juste me dire tous les vides ffs! :p).tks, Que puis-je faire si j'ai des centaines de fichiers vides? Dois-je les supprimer un par un?
OriginalL'auteur Akshay Borade
C'est à cause de corrompu tête fichiers objets résidant dans les locaux .git dossier.
Suivant les commandes ci-dessous permet d'afficher les précédentes refs ainsi que de retracer le commettre.
Il est constaté que, parfois, la diff changements sont présents par la réinitialisation avec la commettre, où les changements sont présente pas de dans le physiquement avant.
Donc, nous avons fait un soft reset la validation ID et utilisé difftool pour définir manuellement les modifications qui ont été perdus.
OriginalL'auteur vimal dhanush