Ich habe gestern Abend einen Stromausfall erlebt, als ich eine Commit-Nachricht geschrieben habe. Beim Booten des Computers konnte ich das Commit nicht abschließen. Ich lief git reset
, fügte die geänderten Dateien wieder hinzu und versuchte es erneut und bekam Folgendes:
% git commit
error: inflate: data stream error (incorrect header check)
error: unable to unpack a94406345ac44982b00cf57b4b9660a35436637f header
fatal: a94406345ac44982b00cf57b4b9660a35436637f is not a valid object
git fsck
zeigt Folgendes:
% git fsck --full
Checking object directories: 100% (256/256), done.
error: inflate: data stream error (incorrect header check)
error: unable to unpack 4346883490a0990e68db0187241abc1642765a73 header
error: inflate: data stream error (incorrect header check)
fatal: loose object 4346883490a0990e68db0187241abc1642765a73 (stored in .git/objects/43/46883490a0990e68db0187241abc1642765a73) is corrupt
Ich stelle fest, dass sich die Nachrichten über verschiedene Objekte beschweren.
Ich suchte SO und das Web und versuchte ein paar verschiedene Dinge, aber ohne Erfolg.
- Ich habe keine aktuelle Sicherungskopie.
- Das Klonen des Repositorys in ein anderes Verzeichnis hilft nicht. Das neue Repository weist genau die gleichen Probleme auf.
git stash
gibt die gleiche Nachricht wiegit commit
. Alle anderen Git-Befehle scheinen normal zu funktionieren.
Wie kann ich feststellen, was falsch ist, und es beheben?
Bearbeiten: git log
Ausgabe wie vorgeschlagen (nur die ersten Zeilen):
% git log --oneline --decorate --all |head -n 8
253b086 (HEAD, new_tokenize) Normalized tokenizer interface slightly
0f2425a (master) Added procs to eval layer
a4d4c22 Added procedures as a type
d1e15ad (tag: v0.10) Added `if' form with tail call semantics
f94a992 (tag: v0.9) Completed environments
031116e Fixed bug where # on a line by itself caused segfault
3d8b09f Added environments, define and set!
01cc624 Put symbol table implementation into types.c
Dies ist ein kleines persönliches Projekt; Normalerweise arbeite ich nur in (Master), aber ich habe zu der Zeit ein Experiment durchgeführt (new_tokenize). 253b086 war das letzte erfolgreiche Commit vor dem Stromausfall.
git log
odergit log --oneline --decorate --all
zu sehen, wie die Geschichte aussieht