Menu
Coddy logo textTech

Git Reflog

Ultimo aggiornamento

git reflog registra ogni punto a cui HEAD ha puntato: ogni commit, checkout, reset e rebase. Siccome Git conserva quei commit per un po' anche dopo che sono spariti dai tuoi branch, il reflog è la tua rete di sicurezza: ti permette di trovare e recuperare il lavoro che un reset --hard, un rebase sbagliato o un branch eliminato sembravano aver distrutto.

Prova questi comandi nel terminal playground: una vera shell nel tuo browser, senza installare nulla.

git reflog registra ogni posizione assunta da HEAD, così un commit perso con un reset o un rebase può essere ritrovato e ripristinato.

Sintassi

ComandoCosa fa
git reflogMostra le posizioni recenti di HEAD, con gli hash
git reflog show <branch>Mostra il reflog di un branch
git reset --hard HEAD@{1}Riporta HEAD a una posizione precedente
git branch recovered <hash>Ricrea un branch su un commit perso

Recuperare dopo un errore

Annulla un reset sbagliato trovando il commit precedente al reset.

PassoComandoRisultato
1git reflogTrova il commit precedente al reset
2git reset --hard HEAD@{1}Riporta il tuo branch su quel commit

Domande frequenti su git reflog

Cos'è git reflog?
È un registro di tutti i punti a cui HEAD (e la punta di ogni branch) ha puntato nel tuo repository locale, dopo commit, checkout, reset, merge e rebase. A differenza di git log, che segue la discendenza dei commit, il reflog è un registro cronologico delle tue azioni, ed è questo che lo rende utile per il recupero.
Come recupero un commit dopo git reset --hard?
Esegui git reflog per trovare la voce del commit su cui eri prima del reset (qualcosa come HEAD@{1}), poi git reset --hard <that-hash> (o HEAD@{1}) per tornarci. Il commit non è stato davvero eliminato: semplicemente nessun branch puntava più a lui, e il reflog ne conosce ancora l'hash.
Come ripristino un branch eliminato?
Trova l'ultimo commit del branch in git reflog, poi ricrea lì il branch: git branch <name> <hash>. Se l'eliminazione è recente (entro la scadenza del reflog di Git, di solito qualche settimana), i commit sono ancora raggiungibili in questo modo.
git reflog funziona tra cloni diversi?
No, il reflog è locale al tuo repository e non viene inviato né clonato. Registra solo le azioni fatte sul tuo computer. Per questo può salvarti da errori locali, ma non può recuperare qualcosa che è esistito solo in un altro clone.
Posso esercitarmi online?
Sì. Apri il terminal playground per eseguire git reflog in una vera shell nel tuo browser, senza installare nulla. Il corso interattivo gratuito di Git di Coddy spiega anche come annullare le modifiche e recuperare il lavoro passo dopo passo.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Git con Coddy

INIZIA