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.
Syntaxe
| Command | What it does |
|---|---|
git reflog | Affiche 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.
| Step | Command | Result |
|---|---|---|
| 1 | git reflog | Retrouvez le commit d'avant le reset |
| 2 | git reset --hard HEAD@{1} | Restaurez votre branche vers celui-ci |
FAQ git reflog
Qu'est-ce que git reflog ?
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 ?
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 ?
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 ?
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.