Il reflog: la rete di sicurezza
Git registra ogni movimento di HEAD nel reflog.
Ispezionare il reflog
git reflog
git reflog show feature/login
git log -g
Recuperare un branch eliminato
git reflog | grep checkout
git checkout -b recovered <sha>
Annullare un reset cattivo
git reset --hard HEAD~5
git reflog
git reset --hard HEAD@{1}
Annullare un rebase cattivo
git reflog
git reset --hard ORIG_HEAD
Recuperare un commit modificato
git commit --amend
git reflog
git reset --hard HEAD@{1}
Trovare commit orfani
git fsck --lost-found
git fsck --no-reflog | grep "dangling commit"
Reflog versus stash
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
git stash apply <sha>
Configurare la scadenza del reflog
git config gc.reflogExpire 180.days
git config gc.reflogExpireUnreachable 90.days