Menu
Coddy logo textTech

Git Reflog

Dernière mise à jour

git reflog enregistre chaque endroit vers lequel HEAD a pointé - chaque commit, checkout, reset et rebase. Comme Git conserve ces commits pendant un certain temps même après qu'ils ont quitté vos branches, le reflog est votre filet de sécurité : il vous permet de retrouver et de récupérer le travail qu'un reset --hard, un mauvais rebase ou une branche supprimée semblaient avoir détruit.

Essayez ceci dans le terminal playground - un vrai shell dans votre navigateur, rien à installer.

git reflog enregistre chaque position de HEAD : un commit perdu après un reset ou un rebase peut être retrouvé et restauré.

Syntaxe

CommandWhat it does
git reflogAffiche les positions récentes de HEAD, avec les hachages
git reflog show <branch>Affiche le reflog d'une branche
git reset --hard HEAD@{1}Ramène HEAD à une position antérieure
git branch recovered <hash>Recrée une branche sur un commit perdu

Récupérer après une erreur

Annulez un reset raté en retrouvant le commit d'avant le reset.

StepCommandResult
1git reflogRetrouvez le commit d'avant le reset
2git reset --hard HEAD@{1}Restaurez votre branche vers celui-ci

FAQ git reflog

Qu'est-ce que git reflog ?
C'est un journal de tous les endroits vers lesquels HEAD (et l'extrémité de chaque branche) a pointé dans votre dépôt local - après des commits, checkouts, resets, merges et rebases. Contrairement à git log, qui suit l'ascendance des commits, le reflog est un enregistrement chronologique de vos actions, ce qui le rend utile pour la récupération.
Comment récupérer un commit après git reset --hard ?
Exécutez git reflog pour trouver l'entrée du commit sur lequel vous étiez avant le reset (quelque chose comme HEAD@{1}), puis git reset --hard <that-hash> (ou HEAD@{1}) pour y revenir. Le commit n'a pas vraiment été supprimé - il n'avait simplement plus de branche pointant vers lui, et le reflog connaît toujours son hachage.
Comment restaurer une branche supprimée ?
Retrouvez le dernier commit de la branche dans git reflog, puis recréez la branche à cet endroit : git branch <name> <hash>. Tant que la suppression est récente (dans le délai d'expiration du reflog de Git, généralement quelques semaines), les commits restent accessibles de cette façon.
git reflog fonctionne-t-il entre les clones ?
Non - le reflog est local à votre dépôt et n'est ni poussé ni cloné. Il n'enregistre que les actions effectuées sur votre machine. C'est pourquoi il peut sauver des erreurs locales mais ne peut pas récupérer quelque chose qui n'a jamais existé que sur un autre clone.
Puis-je m'entraîner à cela en ligne ?
Oui. Ouvrez le terminal playground pour exécuter git reflog dans un vrai shell dans votre navigateur - rien à installer. Le cours Git interactif et gratuit de Coddy couvre aussi l'annulation des modifications et la récupération, étape par étape.
Coddy programming languages illustration

Apprenez Git avec Coddy

COMMENCER