3.9 : git reflog : la boîte noire de Git

La commande qui change le rapport à Git

Beaucoup d’administrateurs manipulent Git avec une prudence excessive : ils recopient leur dossier avant chaque opération, évitent les commandes qu’ils ne maîtrisent pas, et travaillent avec la crainte diffuse de tout casser.

Cette leçon devrait mettre fin à cela.

Git conserve la trace de chacun de vos déplacements, y compris ceux que vous avez annulés, y compris les enregistrements qui n’appartiennent plus à aucune branche. Ce journal s’appelle le reflog, et il est actif par défaut, sans que vous ayez rien à configurer.

Il ne vous rendra pas tout. Mais il vous rendra bien plus que vous ne le croyez.


Ce que Git enregistre réellement

À chaque fois que la position de votre branche change — un enregistrement, une fusion, un changement de branche, un reset —, Git écrit une ligne dans un journal local.

git reflog
e5b1c93 HEAD@{0}: commit: Ajout du lecteur Q: pour la paie
7d2e881 HEAD@{1}: pull: Fast-forward
a3f9c21 HEAD@{2}: reset: moving to HEAD~2
b91c4f2 HEAD@{3}: commit: Correction du chemin de sauvegarde
f2a7e14 HEAD@{4}: commit: Ajout de SRV-BDD02 à l'inventaire
a3f9c21 HEAD@{5}: checkout: moving from test to main

Trois colonnes : l’empreinte, une référence de position, l’action réalisée.

La notation HEAD@{3} se lit « là où se trouvait HEAD il y a trois déplacements ». Elle s’utilise partout où Git attend un enregistrement.