Come recuperare una scorta Git abbandonata, un ramo eliminato o commit persi
Una scorta abbandonata o un ramo eliminato raramente vengono eliminati per sempre: Git conserva i commit finché la garbage collection non li rimuove. Trovali con reflog o git fsck, controlla cosa contengono e rimettili su un ramo prima che sia troppo tardi.
Scritto da Kodmora
La software house dietro GitTree
- Scorta
- Annullamento e ripristino
In questa pagina
Quando rilasci uno stash o elimini un ramo, Git rimuove il nome, non i commit. I commit rimangono nel repository come oggetti irraggiungibili finché la garbage collection non li elimina, di solito dopo due settimane o più. Trova l'ultimo commit di un ramo eliminato nel reflog con git reflog, trova una scorta abbandonata con git fsck --unreachable, controllala con git show, quindi conservala con git branch rescue <sha>.
Questa guida copre ogni caso con i comandi esatti, spiega per quanto tempo Git conserva il lavoro perduto e cosa non può essere recuperato, e mostra lo stesso recupero in Lost & Found di GitTree, che cerca in ogni fonte contemporaneamente e non effettua mai il check-out o reimposta nulla. Lost & Found fa parte del piano gratuito di GitTree. Per annullare un ripristino, un rebase o una modifica, leggi invece come annullare git reset, rebase e commit.
Dove vive effettivamente il lavoro Git “perduto”.
Un commit è raggiungibile quando un ramo, un tag, lo stash o l'HEAD portano ad esso. L'eliminazione di un ramo o il rilascio di uno stash rende i suoi commit irraggiungibili, ma rimangono in .git/objects. Due record ti aiutano a trovarli: il reflog, dove puntavano prima ciascun ramo e HEAD, e il database degli oggetti stesso, in cui git fsck può cercare.
| Quello che hai perso | Dove guardare | Comando |
|---|---|---|
| Un ramo eliminato che avevi estratto | Il reflogging di HEAD | git reflog |
| Un ramo eliminato che non hai mai estratto | Commit irraggiungibili | git fsck --unreachable |
| Una scorta caduta o svuotata | Commit a forma di unione irraggiungibili | git fsck --unreachable | grep commit |
| Commit persi dopo un ripristino o un rebase | Il reflog del ramo | git reflog show <branch> |
| Modifiche mai confermate o nascoste | Da nessuna parte in Git | Non recuperabile da Git |
Recupera un ramo eliminato
Git stampa l'ultimo commit del ramo quando lo elimini (Deleted branch feature/login (was 3f2a9c1)). Se quel messaggio è scomparso, cerca nel reflog di HEAD l'ultima volta che eri sul ramo, quindi ricrea il ramo in quel commit.
# find the last commit of the branch
git reflog | grep "feature/login"
# check what it holds
git show 3f2a9c1 --stat
# put the branch back
git branch feature/login 3f2a9c1Recupera una scorta caduta
Una scorta non ha un proprio reflog una volta rilasciata, quindi cerca i commit irraggiungibili. Uno stash è un commit a forma di unione il cui messaggio inizia con WIP on o On <branch>:, il che semplifica il filtraggio. Questo è il metodo descritto nella documentazione stash di Git.
# list unreachable stash-like commits, newest first
git fsck --unreachable | grep commit | cut -d" " -f3 \
| xargs git log --merges --no-walk --grep=WIP --format="%h %cr %s"
# inspect a candidate
git stash show -p 7c1e0b4
# restore it into your working tree, or keep it on a branch
git stash apply 7c1e0b4
git branch rescue-stash 7c1e0b4Trova tutti i commit pendenti con git fsck --lost-found
git fsck --lost-found elenca i commit pendenti e scrive una copia di ciascuno in .git/lost-found/commit/, denominato in base al suo ID. Usalo quando non sai cosa cercare: elencali con le loro date e messaggi, poi dirama da quello che desideri.
git fsck --lost-found
ls .git/lost-found/commit | xargs git log --no-walk --format="%h %cr %s"
git branch rescue 9d44b0eRecupera il lavoro perduto con Lost & Found di GitTree
Apri Oggetti smarriti
Scegli Strumenti → Oggetti smarriti o premi
Alt+Shift+D. Si apre come una finestra intera nella pagina Inizio, che spiega le tre fonti in cui cerca: il reflog, i riferimenti di recupero di GitTree e gli oggetti irraggiungibili.Trova lavoro locale
Seleziona Includi una scansione più approfondita per oggetti irraggiungibili per cercare anche le scorte abbandonate, quindi premi Trova lavoro locale. Lavoro trovato elenca ciascun risultato con la relativa fonte e quando è stato visto; Filtra per commit, messaggio o fonte restringe l'elenco.
Ispeziona prima di conservare
Seleziona un risultato: Perché appare questo oggetto mostra le sue prove, il suo messaggio e i file appaiono accanto ad esso e ogni file apre il suo contenuto. Niente viene estratto o applicato.
Tienilo su un ramo
In Mantieni questo commit, digita un Nome nuovo ramo e premi Crea ramo di ripristino. Recuperato elenca il ramo; Mostra nel grafico passa ad esso. I tuoi file di checkout e di lavoro non cambiano.

Per quanto tempo Git mantiene i commit persi
| Impostazione | Predefinito | Cosa controlla |
|---|---|---|
gc.reflogExpire | 90 giorni | Aggiorna le voci per i commit ancora raggiungibili |
gc.reflogExpireUnreachable | 30 giorni | Le voci di relog per i commit non sono più raggiungibili |
gc.pruneExpire | 2 settimane | Oggetti irraggiungibili senza voce di reflog, come una scorta caduta |
La Garbage Collection viene eseguita da sola dopo alcuni comandi, quindi queste sono finestre, non promesse. Prima guardi, più trovi. Una copia altrove, come il clone di un compagno di squadra o un ramo inviato, è l’altra rete di sicurezza: il lavoro perso solo sul tuo computer esiste solo lì.
Ciò che non può essere recuperato
- Modifiche che non sono mai state confermate o nascoste, come le modifiche eliminate con
git checkout -- <file>ogit restore. - File non tracciati che non erano in una scorta creata con
-u. - Commette che la garbage collection sia già stata eliminata.
- Lavoro che è sempre esistito solo sul computer di un'altra persona.
Passaggi successivi: la guida Lost & Found documenta ogni pagina e pulsante, trova suggerimenti per i rami precedenti copre la visualizzazione del reflog e la guida git stash spiega come applicare, estrarre e file non tracciati in modo da aver bisogno di recuperarli meno spesso.
Domande frequenti
Posso recuperare una scorta git caduta?
Di solito sì. Una scorta rilasciata diventa un commit irraggiungibile finché la garbage collection non la elimina. Trovalo con git fsck --unreachable, ispezionalo con git stash show -p <sha>, quindi git stash apply <sha> o git branch <name> <sha>.
Come posso recuperare un ramo eliminato in Git?
Trova l'ultimo commit del ramo in git reflog (o il messaggio "era <sha>" che Git ha stampato quando lo hai eliminato), quindi esegui git branch <name> <sha> per ripristinare il ramo.
Cos'è un commit pendente?
Un commit a cui non punta alcuna voce di ramo, tag, stash o reflog. git fsck --lost-found li elenca e li copia in .git/lost-found/commit/ in modo che tu possa controllarli.
Git gc elimina i commit persi?
Sì, una volta che superano le impostazioni di scadenza: per impostazione predefinita gli oggetti non raggiungibili senza una voce di reflog vengono eliminati dopo due settimane. Evita git gc e git prune finché non avrai recuperato il tuo lavoro.
Posso recuperare modifiche che non ho mai effettuato?
Non da Git. Nel database degli oggetti è presente solo il lavoro sottoposto a commit o nascosto. La cronologia locale del tuo editor o un backup è il posto dove cercare.
L'area Lost & Found di GitTree è gratuita?
SÌ. Lost & Found fa parte del piano gratuito di GitTree. Legge solo il tuo repository locale e l'unica modifica apportata è il ramo di ripristino richiesto.
Fonti
Le affermazioni su altri prodotti sono state confrontate con le rispettive pagine ufficiali in data 5 novembre 2026. Cambiano prezzi e caratteristiche; le pagine dei venditori sono la fonte della verità.