25667 shaares
Le reflog Git, c’est quoi ?
Un historique de tous les IDs de commit qu’une branche, un tag ou HEAD a déjà pointés. Utile pour retrouver des commits "perdus".
Différences avec git log
:
- Le reflog est local (non partagé entre dépôts).
- Il montre l’état des branches avant un rebase (contrairement à
git log
). - Les entrées de plus de 90 jours peuvent être supprimées par
git gc
.
Comment l’utiliser ?
- Lancer
git reflog
(ougit reflog BRANCH
pour moins de bruit). - Chercher un message de commit pertinent.
- Inspecter le commit avec
git show $COMMIT_ID
ougit log $COMMIT_ID
. - Récupérer le commit avec
git reset --hard $COMMIT_ID
ougit branch $NAME $COMMIT_ID
.
Limites :
- Le reflog d’une branche est supprimé si la branche l’est.
- Inutile pour récupérer un stash supprimé (
git stash drop
). - Les entrées ne correspondent pas toujours aux commandes Git exécutées.
Dernier recours :
Si le commit n’est plus dans le reflog, utiliser git fsck
pour lister les commits non référencés.