Da Anonimo (non verificato) , 29 Aprile 2026

Gli pseudo-ref non celebrati

Oltre a HEAD, Git mantiene un piccolo zoo di ref aggiornati automaticamente che registrano cosa e appena successo.

HEAD

Punta al branch corrente o, se distaccato, direttamente a uno SHA di commit.

ORIG_HEAD

Impostato da operazioni distruttive (merge, rebase, reset, am) al precedente tip.

git reset --hard ORIG_HEAD

FETCH_HEAD

git fetch origin
git log HEAD..FETCH_HEAD
git diff HEAD FETCH_HEAD -- src/

MERGE_HEAD e CHERRY_PICK_HEAD

cat .git/MERGE_HEAD
git rev-parse --verify MERGE_HEAD && echo "merge in progress"

REVERT_HEAD, BISECT_*

Marker simili esistono per revert (REVERT_HEAD), bisect, rebase, e AM.

Selettori reflog

git reset --hard HEAD@{1}
git checkout @{-1}
git checkout -

Errori comuni

Confondere ORIG_HEAD con il reflog — ORIG_HEAD viene sovrascritto al prossimo op distruttivo.

Flusso pratico di recupero

git reflog
git branch rescue HEAD@{14}
git reset --hard rescue