git reflog

Inspection et comparaison

Afficher où HEAD et les branches sont passées


La commande 'git reflog' liste chaque position qu’a eue HEAD : chaque commit, changement de branche, reset, fusion et rebase, du plus récent au plus ancien. Elle est propre à votre dépôt et sert de filet de sécurité pour le travail perdu — les commits retirés d’une branche par un reset ou un rebase y figurent encore et se récupèrent avec HEAD@{n}. Par défaut, les entrées expirent après 90 jours.

Synopsis

git reflog [show] [<log-options>] [<ref>]
[ ] facultatif| ou<arg> valeur à remplacer... répétable--flag option

Options

Cliquez sur une option pour la déplier

Débutant (1)

Limiter la liste aux n entrées les plus récentes (s’écrit aussi -<n>).

RecommandéLes entrées les plus récentes sont en général celles qu’il vous faut

Exemple

git reflog -n 5

Choisir la bonne option

log ou reflog

Deux historiques

CommandeListePartagé ?
git logLes commits accessibles depuis une brancheOui, avec les commits
git reflogChaque déplacement de HEAD, même vers des commits qu’aucune branche n’aNon, local seulement

Exemples

Lister les déplacements de HEAD

git reflog

Du plus récent au plus ancien, avec les noms HEAD@{n}.


Annuler un reset

git reset --hard HEAD@{1}

Revenir là où était HEAD un déplacement plus tôt.


Reflog d’une branche

git reflog show main

Seulement les déplacements de main.

Exemples de workflows

1
git reflog

Trouver l’entrée d’avant le reset

2
git reset --hard HEAD@{1}

Y revenir

1
git reflog

Trouver le dernier commit de cette branche

2
git switch -c feature/login a1b2c3d

Recréer la branche à cet endroit

Dépannage

Le commit n’est pas dans le reflog

Cause : Il n’a jamais été extrait ici, ou l’entrée a expiré

Essayez git fsck --lost-found pour les commits orphelins

HEAD@{1} pointe vers un endroit inattendu

Cause : Chaque changement de branche compte aussi comme un déplacement

Lisez le reflog et choisissez l’entrée exacte

Astuces et pièges

Bonnes pratiques

  • ✓Consultez git reflog avant de paniquer à cause de commits perdus.
  • ✓Récupérez d’abord sur une nouvelle branche (git switch -c rescue <hash>) pour examiner sans risque.

Erreurs fréquentes

  • ✗Croire qu’un reset --hard a supprimé des commits pour de bon — le reflog les a encore.
  • ✗Attendre trop longtemps : les commits inaccessibles disparaissent quand les entrées du reflog expirent et que git gc passe.
  • ✗S’attendre à trouver le reflog sur une autre machine — il n’est jamais poussé ni cloné.

FAQ

A:

Par défaut, 90 jours pour les entrées accessibles, 30 jours pour les inaccessibles.

A:

Non, il liste seulement. Ce sont git reflog expire et delete qui retirent des entrées.