J'ai eu une panne de disque dur qui a endommagé certains fichiers d'un référentiel Git. En exécutant git fsck --full
J'obtiens le résultat suivant :
error: .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack SHA1 checksum mismatch
error: index CRC mismatch for object 6c8cae4994b5ec7891ccb1527d30634997a978ee from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack at offset 97824129
error: inflate: data stream error (invalid code lengths set)
error: cannot unpack 6c8cae4994b5ec7891ccb1527d30634997a978ee from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack at offset 97824129
error: inflate: data stream error (invalid stored block lengths)
error: failed to read object 0dcf6723cc69cc7f91d4a7432d0f1a1f05e77eaa at offset 276988017 from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack
fatal: object 0dcf6723cc69cc7f91d4a7432d0f1a1f05e77eaa is corrupted
J'ai des sauvegardes du référentiel, mais la seule sauvegarde qui inclut le fichier pack l'a déjà endommagé. Je pense donc que je dois trouver un moyen de récupérer les objets individuels à partir de différentes sauvegardes et d'une manière ou d'une autre demander à Git de produire un nouveau pack avec uniquement les objets corrects.
Pouvez-vous s'il vous plaît me donner des conseils sur la façon de corriger mon dépôt ?
2 votes
Ça vient de m'arriver. Je ne veux pas m'embrouiller avec les objets git... j'ai donc cloné à nouveau le projet à partir du dépôt distant dans un nouveau dossier, puis j'ai simplement copié tous les fichiers de mes dépôts problématiques (à l'exception du fichier
.git
bien sûr) dans le repo fraîchement cloné... et a ensuite faitgit status
dans le nouveau repo... git détecte correctement toutes les modifications affectées à mes fichiers et je peux recommencer mon travail.