Come ripristinare un file eliminato in Git
Il comando giusto dipende da una cosa: fino a che punto è arrivata la cancellazione. Ecco i tre casi, come trovare il commit che ha rimosso un file e cosa Git non può riportare indietro.
Scritto da Kodmora
La software house dietro GitTree
- Annullamento e ripristino
- Commetti la cronologia
In questa pagina
Per ripristinare un file eliminato di cui non hai ancora eseguito il commit, esegui `git restore path/to/file`. Se l'eliminazione è già in un commit, trova il commit con git log --diff-filter=D -- path/to/file, quindi esegui git restore --source=<commit>^ -- path/to/file. Git può ripristinare tutto ciò che una volta era archiviato, quindi un file di cui è stato eseguito il commit è quasi sempre recuperabile.
| Cosa è successo | Comando |
|---|---|
| Eliminato, non in stage | git restore path/to/file |
| Eliminato e in stage | git restore --staged --worktree path/to/file |
| Eliminato in un commit | git restore --source=<commit>^ -- path/to/file |
Come posso ripristinare un file che ho appena eliminato?
Se git status elenca il file in "Modifiche non organizzate per il commit", copialo nuovamente dall'indice:
git restore src/app.tsCome posso ripristinare un file dopo git rm?
git rm elimina il file e organizza l'eliminazione, quindi viene visualizzato in "Modifiche da confermare". Ripristina sia l'indice che la cartella di lavoro da HEAD:
git restore --staged --worktree src/app.tsCome posso ripristinare un file eliminato in un commit precedente?
Per prima cosa trova il commit che lo ha eliminato. --diff-filter=D mostra solo le eliminazioni:
git log --oneline --diff-filter=D -- src/app.tsQuel commit non ha più il file, ma il suo genitore sì. Il ^ significa "il genitore di", quindi ripristina l'ultima versione prima dell'eliminazione:
git restore --source=4f2a9c1^ -- src/app.tsIl file ritorna nella cartella di lavoro come nuova modifica. Rivedilo, quindi mettilo in stage e confermalo come qualsiasi altra modifica. Su un Git precedente alla 2.23, git checkout 4f2a9c1^ -- src/app.ts fa lo stesso lavoro e organizza anche il file.
Cosa succede se non ricordo il percorso completo?
Cerca in ogni ramo il nome del file. Mantieni le virgolette, quindi Git espande il modello anziché la tua shell:
git log --all --diff-filter=D --name-only --oneline -- "**/app.ts"Cosa non può riportare Git?
- Un file che non è mai stato messo in stage o commit. Git non lo ha mai archiviato. Controlla la cronologia locale del tuo editor o il backup del sistema.
- File rimossi da `git clean`. Non sono stati tracciati, quindi Git non ne conserva alcuna copia.
- Modifiche non aggiornate sostituite da `git restore`. Il comando le sovrascrive, quindi eseguilo solo quando intendi farlo.
Un file che è stato messo in stage una volta e poi perso a volte può essere trovato con git fsck --lost-found, che elenca i BLOB a cui non punta nulla. Il post su annullare un ripristino, un rebase o un commit copre i commit persi, la lezione su cronologia e blame dei file mostra come seguire un file indietro nel tempo e la guida su eliminazione e pulizia spiega cosa GitTree salva per primo.
Come recuperare un file in GitTree
Premi prima Annulla
Se GitTree ha eliminato o ripulito il file, premi Annulla nella barra degli strumenti. Salva uno snapshot di ripristino in
refs/ogt/trashprima di rimuovere qualsiasi cosa.Cerca nella storia
Utilizza la ricerca del grafico dei commit per trovare il commit che ha toccato il file, quindi apri quel commit per leggerne la versione.
Utilizza Lost & Found per i commit persi
Scegli Strumenti → Oggetti smarriti per cercare commit a cui non punta più nessun ramo.

Domande frequenti
Qual è la differenza tra git Restore e git Checkout?
git restore è stato aggiunto in Git 2.23 per svolgere un lavoro: ripristinare i file. git checkout cambia anche ramo, il che ne ha facilitato l'uso improprio.
Come posso vedere quando un file è stato eliminato?
Esegui git log --diff-filter=D -- path/to/file. Elenca il commit che lo ha rimosso, con il suo autore e la data.
Perché git Restore dice che Pathspec non corrispondeva?
Git non conosce quel percorso alla fonte che hai scelto. Se il file è stato eliminato in un commit, ripristinalo dal genitore di quel commit con --source=<commit>^.
Posso ripristinare una cartella eliminata?
SÌ. Passa il percorso della cartella anziché un file, ad esempio git restore --source=<commit>^ -- src/utils.
Un file ripristinato viene eseguito automaticamente il commit?
No. Appare come una modifica nella cartella di lavoro. Metti in stage e confermati quando sei pronto.
Fonti
Le affermazioni su altri prodotti sono state confrontate con le rispettive pagine ufficiali in data 7 novembre 2026. Cambiano prezzi e caratteristiche; le pagine dei venditori sono la fonte della verità.