Le problème : “error: le fichier objet est vide”
Il peut arriver, suite à une panne d’électricité ou un défaut de support de données, que votre dépôt Git se retrouve corrompu :
⤷ git status
error: le fichier objet .git/objects/f8/fa13b839f8d33583e552610a1f2760f1e39018 est vide
error: le fichier objet .git/objects/f8/fa13b839f8d33583e552610a1f2760f1e39018 est vide
fatal: l'objet libre fa13b839f8d33583e552610a1f2760f1e39018 (stocké dans .git/objects/f8/fa13b839f8d33583e552610a1f2760f1e39018) est corrompu
Il est possible faire une tentative avec git fsck
, mais dans mon cas la réponse fut “fatal: l’objet libre est corrompu”:
⤷ git fsck --full
error: le fichier objet .git/objects/f8/fa13b839f8d33583e552610a1f2760f1e39018 est vide
error: impossible de mmap .git/objects/f8/fa13b839f8d33583e552610a1f2760f1e39018: Aucun fichier ou dossier de ce type
error: fa13b839f8d33583e552610a1f2760f1e39018: object corrupt or missing: .git/objects/f8/fa13b839f8d33583e552610a1f2760f1e39018
Vérification des répertoires d'objet: 100% (256/256), fait.
error: le fichier objet .git/objects/f8/fa13b839f8d33583e552610a1f2760f1e39018 est vide
error: le fichier objet .git/objects/f8/fa13b839f8d33583e552610a1f2760f1e39018 est vide
fatal: l'objet libre fa13b839f8d33583e552610a1f2760f1e39018 (stocké dans .git/objects/f8/fa13b839f8d33583e552610a1f2760f1e39018) est corrompu
La solution
- Faites une sauvegarde de l’ensemble du dossier, de préférence sur un autre support car ce message d’erreur peut être le signe que votre disque dur est en fin de vie
- Ouvrez le fichier
.git/logs/HEAD
- Copiez le numéro de l’avant-dernier commit, situé en bas du fichier
- Collez ce numéro dans
.git/refs/heads/master
(adaptez selon la branche correspondant à votre situation) - Comparez maintenant votre dossier avec sa sauvegarde (pour ça vous pouvez utiliser Meld) et commitez les modifications
Référence
https://stackoverflow.com/a/8616352 (en anglais)