Par Anonyme (non vérifié) , 29 avril 2026

Les pseudo-refs peu célébrées

Au-delà de HEAD, Git maintient un petit zoo de refs automatiquement mises à jour qui enregistrent ce qui vient de se passer. Les connaître transforme "j'ai supprimé mon travail" en récupération d'une ligne.

HEAD

Pointe vers la branche actuelle ou, en détaché, directement vers un SHA de commit.

ORIG_HEAD

git reset --hard ORIG_HEAD

FETCH_HEAD

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

MERGE_HEAD et CHERRY_PICK_HEAD

cat .git/MERGE_HEAD
git rev-parse --verify MERGE_HEAD && echo "merge en cours"

REVERT_HEAD, BISECT_*

Des marqueurs similaires existent pour revert, bisect, rebase et AM.

Sélecteurs reflog

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

Erreurs courantes

Confondre ORIG_HEAD avec le reflog — ORIG_HEAD est écrasé à la prochaine op destructrice.

Flux pratique de récupération

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