Git & GitHub Professional Workflow · Leçon

Git Reflog et récupération de l’historique

Maîtrisez `git reflog` pour récupérer des validations ou des branches perdues et disposer d’un filet de sécurité pour votre travail.

Leçon 1 sur 411 étapes

Git Reflog et récupération de l’historique est une leçon Git & GitHub Professional Workflow gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Git & GitHub Professional Workflow, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Git & GitHub Professional Workflow comprend 4 leçons au total.

Qu'est-ce que le Git Reflog ?

Vous avez supprimé une branche par erreur ou réinitialisé votre dépôt sur le mauvais commit ? Pas de panique ! Git possède un puissant filet de sécurité appelé Reflog.

Le reflog (journal des références) est un historique des emplacements successifs de votre HEAD et des pointeurs de branche dans votre dépôt local.

Comment le Reflog suit l'historique

Contrairement à l'historique des commits (git log), qui suit les modifications apportées aux fichiers de votre projet, le reflog suit les modifications de vos références.

Chaque fois que votre HEAD (votre commit actuel) ou qu'un pointeur de branche se déplace, Git enregistre cet événement dans le reflog. Cela inclut :

  • Valider des modifications
  • Changer de branche
  • Fusionner ou réappliquer des commits
  • Effectuer une réinitialisation
  • Cloner un dépôt

Afficher votre Reflog

Pour afficher votre reflog, utilisez simplement la commande git reflog. Elle affiche la liste des actions effectuées ainsi que l'état de votre HEAD à ce moment-là.

Simulons quelques actions, puis affichons le reflog :

git init my_repo
cd my_repo

echo "First line" > file.txt
git add file.txt
git commit -m "Initial commit"

echo "Second line" >> file.txt
git add file.txt
git commit -m "Add second line"

git reflog

Décoder les entrées du Reflog

Chaque entrée du reflog suit un format précis. Examinons une entrée type que vous pourriez voir :

a1b2c3d HEAD@{0}: commit: Add new feature

  • a1b2c3d : le hachage SHA-1 du commit sur lequel se trouvait HEAD à ce moment-là.
  • HEAD@{0} : il s'agit du « pointeur d'entrée du reflog ». @{0} correspond à l'état le plus récent, @{1} à celui qui le précédait, et ainsi de suite.
  • commit: Add new feature : une description de l'action qui a déplacé HEAD.

Ces pointeurs sont essentiels pour la récupération !

Scénario : récupérer un commit perdu

Imaginez que vous avez créé un commit, puis que vous l'avez annulé par erreur avec git reset --soft HEAD~1. Votre commit ne figure plus dans l'historique de votre branche actuelle, mais il n'a pas vraiment disparu !

Le reflog s'en souvient. Simulons cette erreur courante :

git init my_project_recovery
cd my_project_recovery

echo "Initial content" > start.txt
git add start.txt
git commit -m "Initial commit"

echo "Important feature" > feature.txt
git add feature.txt
git commit -m "Added an important feature"

# Oops! Accidentally reset
git reset --soft HEAD~1

git reflog

Récupérer le commit

Après la réinitialisation, si vous exécutez git reflog, vous verrez une entrée correspondant à votre commit « Added an important feature », peut-être sous la forme HEAD@{1} ou d'une valeur similaire.

Pour le récupérer, vous pouvez utiliser git reset avec l'entrée du reflog. Par exemple, si le hachage du commit perdu était abcdefg ou si son entrée dans le reflog était HEAD@{1} :

# Assuming the lost commit was HEAD@{1} in the reflog
git reset --hard HEAD@{1}

# Or using the specific commit hash from reflog
# git reset --hard abcdefg

# Now, check your log. The commit is back!
git log --oneline

Scénario : récupérer une branche supprimée

Que se passe-t-il si vous avez supprimé par erreur une branche entière avant de la fusionner, ou si vous pensiez ne plus en avoir besoin ?

Les branches ne sont que des pointeurs vers des commits. Si vous supprimez une branche, les commits vers lesquels elle pointait ne sont pas immédiatement supprimés de votre dépôt. Le reflog se souvient encore de l'emplacement du HEAD de cette branche !

Restaurer une branche à partir du Reflog

Supposons que vous aviez une branche nommée feature-x, que vous avez travaillée, puis que vous l'avez supprimée avec git branch -D feature-x.

Lorsque vous exécutez git reflog, vous pourriez voir une entrée telle que :

1234567 HEAD@{5}: branch: Created branch feature-x ou
abcdefg HEAD@{2}: checkout: moving from feature-x to master

Vous pouvez utiliser le hachage du commit (par exemple, 1234567 ou abcdefg) de l'entrée du reflog où la branche était active pour la recréer :

# Assume 'feature-x' was deleted and its last commit was '1234567'

# Create a new branch pointing to that commit
git branch feature-x-recovered 1234567

# Now, check out your recovered branch
git checkout feature-x-recovered

# Verify its history
git log --oneline

Les entrées du Reflog expirent

Bien que le reflog soit un puissant filet de sécurité, ses entrées ne sont pas conservées indéfiniment. Git supprime les anciennes entrées du reflog après un certain délai.

  • Par défaut, les entrées accessibles (depuis votre HEAD actuel) expirent après 90 jours.
  • Les entrées inaccessibles (par exemple celles de branches supprimées ou de commits qui ne sont plus référencés) expirent après 30 jours.

Il vaut donc mieux récupérer le travail « perdu » le plus tôt possible !

Défi : récupération avec le Reflog

Vous avez créé une nouvelle branche de fonctionnalité, effectué plusieurs commits, puis l'avez supprimée par erreur sans la fusionner. Vous exécutez git reflog et voyez cette entrée :

...
c0ffee1 HEAD@{3}: commit: Implement new user profile page
bada55e HEAD@{4}: checkout: moving from feature/profile to main
...

Quelle suite de commandes recréerait correctement votre branche feature/profile en la faisant pointer vers le dernier commit qu'elle contenait avant sa suppression ?

Reflog : votre filet de sécurité Git

Vous maîtrisez désormais git reflog, un outil essentiel pour récupérer du travail « perdu » dans votre dépôt Git local. Souvenez-vous que :

  • Il suit les emplacements successifs de HEAD et des pointeurs de branche.
  • Utilisez git reflog pour consulter cet historique.
  • Vous pouvez récupérer des commits ou des branches avec git reset ou git branch, en utilisant les entrées du reflog (HEAD@{n} ou des hachages de commits).
  • Les entrées du reflog expirent : agissez rapidement si vous devez récupérer quelque chose !

Gardez votre historique Git propre, tout en sachant que le reflog est là en cas d'urgence !

Gratuit pour commencer

Apprends Git & GitHub Professional Workflow avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
12
Leçons
48

Questions Fréquemment Posées

La leçon « Git Reflog et récupération de l’historique » est-elle gratuite ?

Oui — le texte complet de « Git Reflog et récupération de l’historique » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Git & GitHub Professional Workflow, passe à CoddyKit PRO. Le cours Git & GitHub Professional Workflow comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Git Reflog et récupération de l’historique » ?

Maîtrisez `git reflog` pour récupérer des validations ou des branches perdues et disposer d’un filet de sécurité pour votre travail. Tu pratiques Git & GitHub Professional Workflow avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Git & GitHub Professional Workflow ?

Aucune expérience préalable n'est requise. Git & GitHub Professional Workflow sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Git Reflog et récupération de l’historique » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Git & GitHub Professional Workflow ?

Oui. Chaque leçon Git & GitHub Professional Workflow inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Git Reflog et récupération de l’historique
  2. Git Bisect pour le débogage
  3. Maintenance et nettoyage des dépôts
  4. Réécrire l’historique avec git filter-repo
← Retour à Git & GitHub Professional Workflow