Die unbesungenen Pseudo-Refs
Neben HEAD pflegt Git einen kleinen Zoo automatisch aktualisierter Refs, die aufzeichnen, was gerade passiert ist.
HEAD
Zeigt auf den aktuellen Branch oder, wenn detached, direkt auf einen Commit-SHA.
ORIG_HEAD
Wird von destruktiven Operationen (merge, rebase, reset, am) auf den vorherigen Tip gesetzt.
git reset --hard ORIG_HEAD
FETCH_HEAD
git fetch origin
git log HEAD..FETCH_HEAD
git diff HEAD FETCH_HEAD -- src/
MERGE_HEAD und CHERRY_PICK_HEAD
cat .git/MERGE_HEAD
git rev-parse --verify MERGE_HEAD && echo "merge in progress"
REVERT_HEAD, BISECT_*
Ahnliche Marker existieren fur revert (REVERT_HEAD), bisect, rebase und AM.
Reflog-Selektoren
git reset --hard HEAD@{1}
git checkout @{-1}
git checkout -
Haufige Fehler
ORIG_HEAD mit dem Reflog verwechseln.
Praktischer Recovery-Flow
git reflog
git branch rescue HEAD@{14}
git reset --hard rescue