Vai al contenuto
GitTree
Guide Git3 minuti di lettura

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

Aggiornato
  • 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.

Quale comando si adatta al tuo caso
Cosa è successoComando
Eliminato, non in stagegit restore path/to/file
Eliminato e in stagegit restore --staged --worktree path/to/file
Eliminato in un commitgit 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.ts

Come 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.ts

Come 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.ts

Quel 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.ts

Il 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

  1. 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/trash prima di rimuovere qualsiasi cosa.

  2. 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.

  3. Utilizza Lost & Found per i commit persi

    Scegli Strumenti → Oggetti smarriti per cercare commit a cui non punta più nessun ramo.

Lost & Found in GitTree elenca i commit e gli stash a cui nessun ramo punta, così puoi riportarli indietro.
Lost & Found in GitTree elenca i commit e gli stash a cui nessun ramo punta, così puoi riportarli indietro.

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à.