Je suis de gros problèmes avec un référentiel git sur ma machine locale.
J'ai modifié un fichier, Ran en exécutant J'ai vu plusieurs solutions sur la façon de réparer une blob corrompue ou de commettre, mais c'est un arbre, et je ne trouve pas de réponse sur ce qui aurait pu aller mal, ou comment le réparer. P> Toute aide appréciée :) p> p> Statut GIT code> et le fichier est apparu comme modifié. J'ai ajouté le fichier en utilisant git ajouter. Code> et fonctionnait comme d'habitude. Mais quand j'étais sur le point de commettre les modifications, j'ai eu l'erreur suivante: p> git cat-fichier -t -t e91ce852822d32e380ed7ddd04c93066e3c600ea code>, je peux voir que l'objet est un arbre. P>
3 Réponses :
Qu'est-ce qui aurait pu mal tourner est difficile à dire, et dépend de votre version GIT et de votre environnement. comme pour restaurer un arbre de Objets en vrac , cette réponse" Comment récupérer des objets GIT endommagés par une défaillance du disque dur? " illustre un moyen de le faire, après cela un et vérifier le type de l'objet. p>
Si le type est l'arborescence: vous pouvez utiliser "git ls-arbores" pour récupérer l'arborescence des sauvegardes précédentes; Puis ' mais que supposons trouver ces objets dans des packs plus anciens ou dans des sauvegardes de référentiel. P> p>
Par exemple, dans les vieux jours, il y avait un DISCIER ZLIB AVEC GIT1. 5.1 Déclencher ce type de message en raison d'un Legacyheaders = FAUX code> paramètres. git fsck --ful code> (comme Mark Rushakoff mentionne dans le commentaire) a été effectué. p>
git mktree code>' pour l'écrire à nouveau dans votre référentiel actuel. P>
blockquote>
Trébuché sur cette question aussi, mais .git / objets / paquet / est vide. Comment effectuer une recherche à travers des packs plus anciens?
@OLOF: packs plus anciens? Je crois que c'est là que la dernière phrase "mais suppose de trouver ces objets dans des packs plus anciens ou dans des sauvegardes sur le référentiel". Avez-vous des sauvegardes?
J'ai une sauvegarde, mais malheureusement, il est environ un mois. Comment puis-je les trouver dans des packs plus anciens? Je ne peux pas céder une commission plus ancienne non plus, la seule chose qui semble fonctionner est un journal git.
@Olof fait que le reflète fonctionne? Est Stackoverflow. com / questions / 4176784 / ... une possibilité ici?
Oui, le reflogue fonctionne, mais je ne suis pas sûr de la façon dont Stackoverflow.com/questions/4176784/... aide-moi? Je suis capable de créer une nouvelle succursale à partir du dernier commit, mais je ne peux pas vérifier la nouvelle succursale. Merci pour l'aide jusqu'à présent BTW =)
Exactement. Je reçois la même erreur que celle décrite dans la question. Cette erreur s'est produite sur d'autres référentiels sur le même disque dur. Peut-être que le disque est corrompu d'une manière ou d'une autre?
@OLOF: une corruption de disque est possible. Pouvez-vous reproduire le problème sur un autre disque?
Eh bien, il est difficile de se reproduire car il semble arriver au hasard. Mais c'est toujours le même scénario: a ajouté certains fichiers modifiés et essayé de commettre. Mais l'erreur se produit pendant la validation. La partie étrange est que le disque n'a que trois mois et tout le reste fonctionne bien.
Essayé d'avant en arrière avec des sauvegardes différentes, mais cela n'a toujours pas fonctionné. J'ai supprimé le repo et j'ai commencé partout. Sucks, oui, mais il ne semblait pas y avoir une autre façon d'aller .. Merci pour toute l'aide!
@OLOF: Désolé de lire ça. Je suppose que le nouveau repo n'a pas montré le même problème jusqu'à présent?
Non, pas si loin. Mais je pense que le problème est survenu car il est situé sur un dossier réseau partagé. Je ne sais pas grand chose de git et de dossiers partagés, mais c'est la seule chose à laquelle je puisse penser. Nous allons bientôt changer notre flux de travail pour inclure des serveurs de développement locaux. Nous nous débarrasserons donc si le problème du dossier partagé.
Bonjour, pour ma part, je viens de supprimer le répertoire Git et Re-Init Git. P>
Voulez-vous dire supprimer le répertoire .git code>? Alors ... pas git init code> je suppose?
Si votre repo git est synchronisé avec une ressource externe (GitHub) et ce que j'ai fait: p> Ça a fonctionné. Évidemment, ce n'est pas une excellente solution, mais cela peut aider p> p>
Parfois, tout ce que vous pouvez faire. Pas une bonne solution cependant, et vraiment seulement acceptable sur des projets solo :)
Avez-vous exécuté
git fsck code>?Oui, même erreur. Cependant, c'est un autre objet, c'est aussi un arbre.
@Markrushakoff: Il suffit de recevoir la même erreur que OLOF, et
git fsck code> sortit simplement le même message d'erreur.