Mon dépôt Git a été corrompu après plusieurs redémarrages difficiles dus à des problèmes d'alimentation électrique et je suis maintenant incapable de le réparer (j'étais au milieu de la mise en place de certains fichiers lors de la dernière coupure de courant) :
$ git status
fatal: failed to read object 3d18855708b0f127d40c13c679559d7679228b69: Invalid argument
$ git fsck
fatal: failed to read object 24377c609184c192f3f3c1733bac7115c1080758: Invalid argument
$ git branch -a
(...works, lists branches...)
$ git checkout someotherbranch
fatal: failed to read object 3d18855708b0f127d40c13c679559d7679228b69: Invalid argument
$ git log
fatal: failed to read object 3d18855708b0f127d40c13c679559d7679228b69: Invalid argument
$ git log someotherbranch
(...works, shows commits...)
Donc, comme vous pouvez le voir, ma branche actuelle est plutôt mal foutue, et je ne semble pas être en mesure de la réparer. Que puis-je faire pour réparer cela ?
1 votes
S'agit-il d'une version du serveur ? Existe-t-il des clones ou des versions locales que vous pouvez utiliser pour la restauration ?
1 votes
C'est mon répertoire git local... J'ai un clone sur une autre machine que je pourrais utiliser pour tout restaurer (avec quelques commits perdus peut-être), mais je préfère réparer ce repo si possible...
0 votes
Il convient de préciser que le contenu du dossier de travail peut encore être récupéré. Faire
git diff > diff.patch
Vous pouvez alors l'utiliser comme ceci pour patcher un nouveau clone :git patch -p1 < diff.patch
1 votes
Les pannes d'électricité font cela. Il en va de même pour un disque dur ou un SSD défectueux.
4 votes
Presque toutes les réponses supposent que l'on peut simplement recréer un clone à partir d'une origine distante non corruptible. Voici le problème... Que se passe-t-il si vous son l'origine, et vous êtes corrompus ? C'est vrai. Donc, ici :
git-repair
est un programme qui exécutegit fsck
et s'efforce de résoudre les problèmes qu'il rencontre. git-repair.branchable.com Il semble tout à fait capable, et bien que vous puissiez finir par devoir copier (si vous le pouvez !) des objets à partir d'une sauvegarde (vous avez une sauvegarde, n'est-ce pas ?), il devrait vous faire gagner beaucoup de temps en récupérant tout ce qu'il peut et en vous laissant le vrai travail, et non pas de nombreuses tâches automatisables. Aucune affiliation, etc.