Come rimuovere file dai repository Git senza rompere il tuo progetto
Scopri come rimuovere file in un repository Git, evita gli errori più comuni e gestisci il tuo repository in modo pulito anche in scenari complessi o sensibili.
Rimuovere file in Git non è sempre così semplice come sembra. Elimini un file dal tuo sistema, ma non significa che sia sparito dal repository. Potrebbe esistere ancora nella cronologia o, peggio, finire committato per errore, come un file di configurazione o una chiave API.
In questa guida imparerai a rimuovere file da Git. Partiremo da comandi di base come git rm, poi passeremo a metodi più avanzati come la pulizia dei file non tracciati e la modifica della cronologia dei commit.
Prerequisiti
Prima di rimuovere file con Git, assicuriamoci che tutto sia configurato correttamente.
Per prima cosa, verifica se Git è installato. Apri il terminale ed esegui:
Puoi anche installare una GUI per Git come GitHub Desktop, Sourcetree o GitKraken se preferisci un'interfaccia visiva. Ma in questa guida userò la riga di comando (Git Bash).
Assicurati di avere i permessi per apportare modifiche al repository, soprattutto se fai parte di un team o lavori con un repo remoto come GitHub o GitLab.
Nota: alcune azioni di rimozione file non possono essere annullate. Quindi è una buona idea fare un backup del progetto o almeno ricontrollare lo stato del tuo repo prima di eseguire qualsiasi comando che elimini file.
Fatto questo, iniziamo.
Rimozione di base dei file in Git
Ci sono diversi modi per rimuovere file in Git, a seconda di ciò che vuoi fare. Vediamo alcune opzioni comuni:
Usare git rm
Il comando git rm rimuove i file dal tuo repository Git. Quando lo esegui, succedono due cose:
Git rimuove il file dalla tua working directory
Prepara (staging) quella modifica per il prossimo commit
Ma Git non si limita a cancellare il file. Registra l'eliminazione nella cronologia. Una volta effettuato il commit, il file è ufficialmente rimosso dal progetto.
Questo elimina ogni file dentro la cartella temp senza eliminare la cartella stessa.
Git aggiunge anche alcuni controlli di sicurezza. Se un file ha modifiche non ancora committate, Git non lo eliminerà a meno che tu non lo forzi. Quindi usa questo solo se sei sicuro che quelle modifiche possano essere scartate:
(Qui, * significa tutto. Corrisponde a qualsiasi nome file che termina con .txt.)
2. --cached
Questo rimuove il file dal repository ma lo lascia sul tuo computer. Mettiamo che io abbia aggiunto per sbaglio un file sensibile come config.env. Non lo voglio nel repo, ma mi serve ancora sulla mia macchina. Quindi eseguirei:
Qui, git rm lo eliminerebbe dal repository e dalla working directory. E --cached lo rende non tracciato da Git (così non verrà pushato), ma lo lascia fisicamente al suo posto.
Per evitare che venga aggiunto di nuovo, aggiungilo a .gitignore:
Sta per ricorsivo. Invece di un file, elimina ricorsivamente la directory e il suo contenuto. Senza questo, Git ti darà un errore se provi a rimuovere una cartella.
Se usi git rm, gestisce tutto in un solo passaggio. Elimina il file e prepara subito la modifica:
git rm file.txtgit commit -m "Remove file.txt"Offerto da
Non c'è bisogno di eseguire git add separatamente. È più pulito e non rischi di dimenticare di mettere in stage l'eliminazione.
In breve:
L'eliminazione manuale richiede passaggi extra per assicurarti che Git rilevi la modifica.
Se dimentichi di mettere in stage l'eliminazione, Git pensa ancora che il file esista, il che può causare confusione nei commit o nei merge.
git rm è più pulito e sicuro quando vuoi rimuovere intenzionalmente file tracciati.
Ripristinare file eliminati in Git
E se elimini un file e poi ti accorgi che ti serve ancora? Nessun problema. Git ti offre diversi modi per recuperarlo, a seconda di quando noti l'errore.
Se non hai ancora fatto il commit:
Mettiamo che tu abbia eliminato il file ma non abbia ancora fatto il commit della modifica. Puoi ripristinarlo dall'ultimo commit così:
Nelle versioni più vecchie di Git, potevi usare il comando qui sopra. Questo comando ripristina un file da uno specifico commit, ma poteva anche cambiare branch.
A partire da Git 2.23, è stato diviso in due comandi più chiari:
git switch (per cambiare branch)
git restore (per ripristinare file)
Se vuoi solo ripristinare un file da un commit, usa:
git restore --source=<commit-hash> --file.txtOfferto da
Questo preleva il file da quel commit e lo rimette nella tua working directory.
Se non sei sicuro di quando il file è stato eliminato:
Magari hai fatto un sacco di modifiche e non ricordi quando è sparito il file. In questo caso, usa git reflog o reference log:
Questo mostra una cronologia completa dei tuoi commit, checkout, reset e tutto il resto.
Ma git reflog è solo locale e non funziona sui remoti. Se lavori con un repo remoto, è meglio usare git log -- file.txt per tracciare la cronologia di quel file.
Una volta trovato il punto in cui il file esisteva ancora, ripristinalo usando git checkout o git restore come prima.
Correggere file mancanti in Git
A volte i file vengono eliminati direttamente dal sistema—magari tramite un file explorer, un comando rm da terminale o anche per errore. Quando succede, Git non ripulisce automaticamente. Invece, contrassegna quei file come mancanti e aspetta che tu gestisca correttamente la rimozione.
Vediamo come affrontare questa situazione, passo dopo passo.
Sostituisci <branch-name> con il branch di lavoro, come main o dev.
Passo 4: in alternativa
Mettiamo che tu abbia eliminato manualmente un mucchio di file, magari per errore o durante una pulizia. Git pensa ancora che quei file esistano finché non gli dici il contrario.
Se non vuoi rimuoverli uno per uno con git rm, c'è un modo più veloce per ripulire.
Esegui questo comando nel terminale:
git ls-files --deleted -z | xargs -0 git rmOfferto da
Ecco cosa fa:
git ls-files --deleted elenca tutti i file che Git sta tracciando ma che ora risultano mancanti.
xargs -0 git rm passa quei nomi di file a git rm e li rimuove dall'indice di Git.
È molto utile quando lavori su un progetto grande e vuoi ripulire rapidamente.
Nota: ho ricevuto questo messaggio perché non ci sono file tracciati attualmente mancanti sul tuo disco.
Rimozione avanzata di file in Git
Ora che abbiamo visto le basi, vediamo situazioni più avanzate in cui rimuovere un file da Git non è così semplice come eseguire git rm. Sono casi in cui sono coinvolti dati sensibili o in cui bisogna ripulire con attenzione file non tracciati.
Rimuovere dati sensibili da Git
A volte un file con dati privati, come chiavi API o password, viene committato per errore. Eliminarlo normalmente non basta. Perché Git mantiene una cronologia completa, e il file esiste ancora nei commit precedenti.
Per cancellarlo completamente, puoi usare il comando git filter-repo: git filter-repo (consigliato)
È un'alternativa più nuova e migliore a filter-branch. È più veloce, sicura e facile da usare.
Per prima cosa, installalo (ti serviranno Python e pip):
Poi avvisa i tuoi colleghi. Dovranno riclonare o resettare le copie locali per evitare errori.
Pulire i file non tracciati con git clean
Facciamo chiarezza:
I file tracciati sono nella cronologia di Git. Per rimuoverli, usa git rm, poi fai il commit.
I file non tracciati non sono affatto in Git. Possono accumularsi e appesantire il progetto.
Per eliminare file o cartelle non tracciati, usa git clean.
Ecco le opzioni più utili:
git clean -n # Show which untracked files will be removedgit clean -nd # Show which untracked folders will be removedgit clean -fd # Delete all untracked files and folders. It is destructive.Offerto da
Qui:
-n significa solo anteprima.
-f significa eliminazione forzata.
-d include le cartelle nella pulizia.
Nota: git clean non tocca i file tracciati. Ma eliminerà qualsiasi cosa non tracciata, anche file che intendevi tenere. Quindi usa sempre prima -n per vedere cosa rimuoverà.
Rimozione file in GitHub e strumenti GUI
Finora abbiamo usato principalmente la riga di comando. Ma non tutti lavorano così ed è assolutamente ok. Alcuni sviluppatori usano strumenti visivi lavorando direttamente in GitHub.
Vediamo quindi come funziona l'eliminazione dei file nell'interfaccia web di GitHub e in altri strumenti GUI, e come si confronta con la riga di comando.
Eliminare file sul sito GitHub
Se lavori nell'interfaccia browser di GitHub, puoi eliminare file senza usare il terminale.
Ecco come funziona nell'interfaccia 2025:
Apri il file che vuoi eliminare.
Clicca sui tre puntini nell'angolo in alto a destra.
Scegli Delete file dal menu a discesa.
GitHub mostrerà quindi una casella per il messaggio di commit. Aggiungi un breve messaggio come:
Oppure crea un nuovo branch e apri una pull request (consigliato per i flussi di lavoro in team)
Clicca Commit changes e GitHub rimuoverà il file e salverà l'eliminazione come un commit, proprio come fa git rm dalla riga di comando.
Eliminare file con strumenti Git GUI
Se usi una GUI per Git come GitHub Desktop, Sourcetree o Tower, il processo è altrettanto semplice:
Elimina il file nel file explorer o all'interno dell'app.
L'app mostra l'eliminazione sotto “Changes” o “File Status”.
Rivedi, metti in stage e fai il commit della modifica.
Ogni strumento ha un aspetto leggermente diverso, ma il flusso è simile: tracci le modifiche in modo visivo e fai commit quando sei pronto.
Buone pratiche per piattaforma
Ecco uno sguardo rapido a come funziona l'eliminazione dei file sulle diverse piattaforme e quando ognuna è più utile:
GitHub (Web): utile per correzioni rapide e piccoli aggiornamenti. Evitalo per grandi pulizie o file sensibili.
Strumenti Git GUI: ottimi per il lavoro quotidiano. Facile vedere le modifiche e fare commit in sicurezza.
Riga di comando: la più flessibile e potente. Ideale per attività avanzate come modifiche massicce o riscritture della cronologia.
Buone pratiche per la rimozione di file in Git
Rimuovere file in Git può sembrare semplice, ma un passo falso può rompere il codice. Ecco alcuni consigli pratici che uso per assicurarmi che le eliminazioni siano sicure e controllate, soprattutto in progetti condivisi o a lungo termine.
Verifica sempre prima di eliminare
Prima di rimuovere un file, prenditi un minuto per confermare cosa fa:
Esegui git status per vedere se è in stage o modificato.
Usa git log -- <filename> per controllarne la cronologia dei commit.
Questo controllo rapido mi risparmia ore di recupero in seguito.
Usa commit atomici
Un commit atomico significa un commit per ogni modifica logica.
Per esempio, se sto eliminando file inutilizzati, faccio il commit solo di quelle eliminazioni, separatamente dalle modifiche al codice.
Ecco perché è molto utile:
Il debug è più semplice. Strumenti come git bisect funzionano meglio quando i commit sono piccoli e focalizzati.
La cronologia dei commit rimane pulita e chiara.
Le code review sono più veloci.
Collabora con attenzione sulle riscritture della cronologia
Riscrivere la cronologia con strumenti come git filter-repo influenza tutti nel tuo team. Per evitare caos:
Comunica prima di riscrivere branch condivisi.
Usa git push --force con cautela perché riscrive la cronologia remota.
Dì ai colleghi di riclonare o resettare i repo locali dopo.
Usa --dry-run prima di comandi distruttivi
Prima di eseguire un comando che elimina file, testalo sempre:
Tiene fuori dal repo file sensibili o locali (come .env, .log o node_modules).
Evita disordine nella cronologia di Git.
Le modifiche future a quei file non genereranno più cambiamenti in Git.
Casi limite in Git: staging e cartelle vuote
A volte la rimozione dei file non va come previsto. Potresti mettere in stage il file sbagliato o avere problemi con cartelle vuote.
Ecco come gestisco i casi limite più comuni.
Togliere dallo stage un file senza rimuovere le modifiche
Mettiamo che io esegua git add . e metta in stage per errore un file che non volevo. Non voglio perdere le modifiche—voglio solo toglierlo dallo stage.
Ora il file dovrebbe risultare "modified" invece di "staged".
Mantenere cartelle vuote nel repo
Per impostazione predefinita, Git ignora le cartelle vuote. Se provo a fare commit di una cartella senza file al suo interno, Git la salta.
Ma a volte voglio mantenere quella cartella nel repo, ad esempio per futuri log o upload. La soluzione comune è aggiungere un file segnaposto chiamato .gitkeep.
Ecco come:
touch logs/.gitkeepgit add logs/.gitkeepgit commit -m "Keep logs folder in the repo"Offerto da
Questo rende la cartella "non vuota", così Git la traccia.
Nota: .gitkeep non è integrato in Git. È solo una convenzione. Puoi chiamare il file come vuoi, ma .gitkeep indica agli altri a cosa serve.
Risoluzione dei problemi nella rimozione di file Git
Ecco alcuni problemi comuni che mi sono capitati rimuovendo file in Git e come risolverli.
Il file appare ancora nel repository remoto
Hai eliminato il file, fatto il commit, ma è ancora sul repo remoto. Forse hai dimenticato di fare push.
Questo riporta tutti i file al loro stato dell'ultimo commit.
Considerazioni finali
Quando rimuovi file in Git, è facile sbagliare se non stai attento. Un piccolo errore può portare a problemi più grandi: codice rotto, lavoro perso o confusione nel team. Per questo, prendi un attimo per ricontrollare quello che stai facendo.
Usa il comando giusto per la situazione. Se non sei sicuro di cosa farà, testalo prima con una dry run. E se lavori con altri, assicurati che tutti siano allineati.
Fai un passo alla volta. È così che si diventa bravi in queste cose.
Git Remove File FAQs
Cosa significa “mettere in stage la rimozione”?⌄
Lo staging significa preparare le modifiche per il prossimo commit. Quando esegui git rm filename, Git elimina il file dalla tua cartella e prepara quell'eliminazione per essere salvata nel prossimo commit. Questo si chiama mettere in stage la rimozione. La modifica non è permanente finché non esegui git commit.
Qual è la differenza tra git rm e rm?⌄
rm elimina un file solo dalla tua cartella locale. Git non traccerà questa modifica finché non glielo specifichi.
git rm rimuove il file e mette in stage l'eliminazione per il prossimo commit, così Git lo elimina anche dal repo.
Quando dovrei usare git push origin rispetto a git push?⌄
Ecco quando usare ciascuno:
Usa git push se il tuo branch è già collegato a un remoto.
Usa git push origin quando vuoi essere chiaro su quale remoto fare push, ad esempio quando stai pushando un nuovo branch o hai più di un remoto.
Cosa fa git pull?⌄
git pull aggiorna il tuo branch locale con le modifiche più recenti dal remoto. Recupera i nuovi commit dal remoto e poi li unisce nel tuo branch corrente.
Sono una content strategist: mi piace semplificare argomenti complessi. Ho aiutato aziende come Splunk, Hackernoon e Tiiny Host a creare contenuti coinvolgenti e informativi per il loro pubblico.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Impara il controllo di versione con Git dalle basi ai flussi di lavoro avanzati. Traccia le modifiche, gestisci i repository e collabora in modo efficiente.
Rimuovere file in Git non è sempre così semplice come sembra. Elimini un file dal tuo sistema, ma non significa che sia sparito dal repository. Potrebbe esistere ancora nella cronologia o, peggio, finire committato per errore, come un file di configurazione o una chiave API.
In questa guida imparerai a rimuovere file da Git. Partiremo da comandi di base come
git rm, poi passeremo a metodi più avanzati come la pulizia dei file non tracciati e la modifica della cronologia dei commit.Prerequisiti
Prima di rimuovere file con Git, assicuriamoci che tutto sia configurato correttamente.
Per prima cosa, verifica se Git è installato. Apri il terminale ed esegui:
Se vedi un numero di versione, sei a posto.
Se vedi un numero di versione, sei a posto.
Puoi anche installare una GUI per Git come GitHub Desktop, Sourcetree o GitKraken se preferisci un'interfaccia visiva. Ma in questa guida userò la riga di comando (Git Bash).
Assicurati di avere i permessi per apportare modifiche al repository, soprattutto se fai parte di un team o lavori con un repo remoto come GitHub o GitLab.
Nota: alcune azioni di rimozione file non possono essere annullate. Quindi è una buona idea fare un backup del progetto o almeno ricontrollare lo stato del tuo repo prima di eseguire qualsiasi comando che elimini file.
Fatto questo, iniziamo.
Rimozione di base dei file in Git
Ci sono diversi modi per rimuovere file in Git, a seconda di ciò che vuoi fare. Vediamo alcune opzioni comuni:
Usare git rm
Il comando
git rmrimuove i file dal tuo repository Git. Quando lo esegui, succedono due cose:Ma Git non si limita a cancellare il file. Registra l'eliminazione nella cronologia. Una volta effettuato il commit, il file è ufficialmente rimosso dal progetto.
Puoi rimuovere un file, molti file o un gruppo di file usando i caratteri jolly.
Per esempio, per rimuovere tutti i file di log:
Questo dice a Git di rimuovere ogni file nella cartella che termina con
.log. Puoi confermare la modifica usando:Elimina più file con un solo comando git rm. Immagine dell'autore.
Vuoi rimuovere tutti i file dentro una cartella ma non la cartella stessa? Usa:
Questo elimina ogni file dentro la cartella temp senza eliminare la cartella stessa.
Git aggiunge anche alcuni controlli di sicurezza. Se un file ha modifiche non ancora committate, Git non lo eliminerà a meno che tu non lo forzi. Quindi usa questo solo se sei sicuro che quelle modifiche possano essere scartate:
Per rimuovere un'intera cartella e tutto ciò che contiene, aggiungi il flag
-r:Questo rimuove
testfoldere tutti i file al suo interno.Ora, per effettuare il commit della modifica, esegui il seguente comando:
Opzioni chiave di git rm
Ecco le opzioni più comuni che userai con
git rm:1. <filename>
Questo è l'uso di base. Elenca semplicemente i file che vuoi rimuovere:
Puoi anche usare un carattere jolly per rimuovere più file dello stesso tipo. Per esempio, per rimuovere tutti i file.txt:(Qui,
*significa tutto. Corrisponde a qualsiasi nome file che termina con.txt.)2. --cached
Questo rimuove il file dal repository ma lo lascia sul tuo computer. Mettiamo che io abbia aggiunto per sbaglio un file sensibile come config.env. Non lo voglio nel repo, ma mi serve ancora sulla mia macchina. Quindi eseguirei:
Qui,
git rmlo eliminerebbe dal repository e dalla working directory. E--cachedlo rende non tracciato da Git (così non verrà pushato), ma lo lascia fisicamente al suo posto.Per evitare che venga aggiunto di nuovo, aggiungilo a
.gitignore:3. -r
Sta per ricorsivo. Invece di un file, elimina ricorsivamente la directory e il suo contenuto. Senza questo, Git ti darà un errore se provi a rimuovere una cartella.
Qui ho creato una cartella chiamata
testfoldere due file al suo interno:a.txteb.txt.Poi eseguo il seguente comando:Questo ha rimosso la cartella insieme a tutti i contenuti e ai file al suo interno
4.
--dry-runSe non sei sicuro di cosa succederà rimuovendo un file, usa
git rmcon l'opzione--dry-runcosì:È un modo sicuro per vedere in anteprima cosa verrà rimosso.
Oppure, se stai ripulendo file non tracciati e vuoi ricontrollare cosa verrà rimosso, usa:
Questo mostrerà solo cosa eliminerebbe il comando.
Analisi comparativa dei workflow
C'è più di un modo per rimuovere un file in Git. I metodi possono sembrare uguali, ma non si comportano allo stesso modo.
git rm vs eliminazione manuale
Prendiamo un file chiamato
file.txt. Diciamo che non mi serve più.Un modo per rimuoverlo è eliminarlo direttamente dal sistema.
Su Linux, macOS o Git Bash:
Su Windows (prompt dei comandi):
Questo elimina il file dalla tua cartella. Ma Git ancora non lo sa. Quindi devi dire manualmente a Git che il file è stato rimosso:
Questo prepara (stage) l'eliminazione in modo che sia inclusa nel prossimo commit.
Se hai eliminato diversi file e non li ricordi tutti, puoi eseguire:
Questo prepara tutti i file tracciati che sono stati modificati o eliminati. Non includerà i file non tracciati.
Ora effettua il commit della modifica:
Se usi
git rm, gestisce tutto in un solo passaggio. Elimina il file e prepara subito la modifica:Non c'è bisogno di eseguire
git addseparatamente. È più pulito e non rischi di dimenticare di mettere in stage l'eliminazione.In breve:
git rmè più pulito e sicuro quando vuoi rimuovere intenzionalmente file tracciati.Ripristinare file eliminati in Git
E se elimini un file e poi ti accorgi che ti serve ancora? Nessun problema. Git ti offre diversi modi per recuperarlo, a seconda di quando noti l'errore.
Se non hai ancora fatto il commit:
Mettiamo che tu abbia eliminato il file ma non abbia ancora fatto il commit della modifica. Puoi ripristinarlo dall'ultimo commit così:
Questo riporta il file nella tua working directory dall'ultimo commit.
Se hai già committato l'eliminazione:
Va bene anche così. Per prima cosa, trova l'ultimo commit in cui il file esisteva ancora:
Scorri il log e copia l'hash del commit in cui il file era ancora presente. Poi esegui:
Nelle versioni più vecchie di Git, potevi usare il comando qui sopra. Questo comando ripristina un file da uno specifico commit, ma poteva anche cambiare branch.
A partire da Git 2.23, è stato diviso in due comandi più chiari:
git switch(per cambiare branch)git restore(per ripristinare file)Se vuoi solo ripristinare un file da un commit, usa:
Questo preleva il file da quel commit e lo rimette nella tua working directory.
Se non sei sicuro di quando il file è stato eliminato:
Magari hai fatto un sacco di modifiche e non ricordi quando è sparito il file. In questo caso, usa git reflog o reference log:
Questo mostra una cronologia completa dei tuoi commit, checkout, reset e tutto il resto.
Ma
git reflogè solo locale e non funziona sui remoti. Se lavori con un repo remoto, è meglio usaregit log -- file.txtper tracciare la cronologia di quel file.Una volta trovato il punto in cui il file esisteva ancora, ripristinalo usando
git checkoutogit restorecome prima.Correggere file mancanti in Git
A volte i file vengono eliminati direttamente dal sistema—magari tramite un file explorer, un comando rm da terminale o anche per errore. Quando succede, Git non ripulisce automaticamente. Invece, contrassegna quei file come mancanti e aspetta che tu gestisca correttamente la rimozione.
Vediamo come affrontare questa situazione, passo dopo passo.
Passo 1: verifica i file mancanti
Esegui questo nella cartella del progetto:
Se Git dice che un file è deleted, significa che è sparito dal tuo sistema, ma la modifica non è ancora in stage.
Passo 2: metti in stage l'eliminazione
Per dire a Git di mettere in stage tutte le modifiche (inclusi i file eliminati), esegui:
Questo mette in stage tutte le modifiche ai file: nuovi, modificati ed eliminati. Poi effettua il commit:
Questo è il modo più sicuro per ripulire perché cattura ogni modifica in un solo colpo.
Passo 3: fai push sul remoto
Se lavori con un repository remoto, fai push del commit:
Sostituisci
<branch-name>con il branch di lavoro, comemainodev.Passo 4: in alternativa
Mettiamo che tu abbia eliminato manualmente un mucchio di file, magari per errore o durante una pulizia. Git pensa ancora che quei file esistano finché non gli dici il contrario.
Se non vuoi rimuoverli uno per uno con
git rm, c'è un modo più veloce per ripulire.Esegui questo comando nel terminale:
Ecco cosa fa:
git ls-files --deletedelenca tutti i file che Git sta tracciando ma che ora risultano mancanti.xargs -0 git rmpassa quei nomi di file agit rme li rimuove dall'indice di Git.È molto utile quando lavori su un progetto grande e vuoi ripulire rapidamente.
Nota: ho ricevuto questo messaggio perché non ci sono file tracciati attualmente mancanti sul tuo disco.
Rimozione avanzata di file in Git
Ora che abbiamo visto le basi, vediamo situazioni più avanzate in cui rimuovere un file da Git non è così semplice come eseguire
git rm. Sono casi in cui sono coinvolti dati sensibili o in cui bisogna ripulire con attenzione file non tracciati.Rimuovere dati sensibili da Git
A volte un file con dati privati, come chiavi API o password, viene committato per errore. Eliminarlo normalmente non basta. Perché Git mantiene una cronologia completa, e il file esiste ancora nei commit precedenti.
Per cancellarlo completamente, puoi usare il comando
git filter-repo: git filter-repo (consigliato)È un'alternativa più nuova e migliore a
filter-branch. È più veloce, sicura e facile da usare.Per prima cosa, installalo (ti serviranno Python e pip):
Poi esegui:
Questo rimuove il file
hide.txtda ogni commit nella cronologia del tuo repo.Per confermare, esegui:
Se il file è sparito, aggiungilo a
.gitignorecosì non viene tracciato di nuovo:Se lavori in team, pulisci la cronologia riscritta e forza il push delle modifiche:
Poi avvisa i tuoi colleghi. Dovranno riclonare o resettare le copie locali per evitare errori.
Pulire i file non tracciati con git clean
Facciamo chiarezza:
git rm, poi fai il commit.Per eliminare file o cartelle non tracciati, usa
git clean.Ecco le opzioni più utili:
Qui:
-nsignifica solo anteprima.-fsignifica eliminazione forzata.-dinclude le cartelle nella pulizia.Nota:
git cleannon tocca i file tracciati. Ma eliminerà qualsiasi cosa non tracciata, anche file che intendevi tenere. Quindi usa sempre prima-nper vedere cosa rimuoverà.Rimozione file in GitHub e strumenti GUI
Finora abbiamo usato principalmente la riga di comando. Ma non tutti lavorano così ed è assolutamente ok. Alcuni sviluppatori usano strumenti visivi lavorando direttamente in GitHub.
Vediamo quindi come funziona l'eliminazione dei file nell'interfaccia web di GitHub e in altri strumenti GUI, e come si confronta con la riga di comando.
Eliminare file sul sito GitHub
Se lavori nell'interfaccia browser di GitHub, puoi eliminare file senza usare il terminale.
Ecco come funziona nell'interfaccia 2025:
GitHub mostrerà quindi una casella per il messaggio di commit. Aggiungi un breve messaggio come:
Puoi anche scrivere una descrizione facoltativa.
Poi scegli come salvare la modifica:
mainClicca Commit changes e GitHub rimuoverà il file e salverà l'eliminazione come un commit, proprio come fa
git rmdalla riga di comando.Eliminare file con strumenti Git GUI
Se usi una GUI per Git come GitHub Desktop, Sourcetree o Tower, il processo è altrettanto semplice:
Ogni strumento ha un aspetto leggermente diverso, ma il flusso è simile: tracci le modifiche in modo visivo e fai commit quando sei pronto.
Buone pratiche per piattaforma
Ecco uno sguardo rapido a come funziona l'eliminazione dei file sulle diverse piattaforme e quando ognuna è più utile:
Buone pratiche per la rimozione di file in Git
Rimuovere file in Git può sembrare semplice, ma un passo falso può rompere il codice. Ecco alcuni consigli pratici che uso per assicurarmi che le eliminazioni siano sicure e controllate, soprattutto in progetti condivisi o a lungo termine.
Verifica sempre prima di eliminare
Prima di rimuovere un file, prenditi un minuto per confermare cosa fa:
git statusper vedere se è in stage o modificato.git log -- <filename>per controllarne la cronologia dei commit.Questo controllo rapido mi risparmia ore di recupero in seguito.
Usa commit atomici
Un commit atomico significa un commit per ogni modifica logica.
Per esempio, se sto eliminando file inutilizzati, faccio il commit solo di quelle eliminazioni, separatamente dalle modifiche al codice.
Ecco perché è molto utile:
git bisectfunzionano meglio quando i commit sono piccoli e focalizzati.Collabora con attenzione sulle riscritture della cronologia
Riscrivere la cronologia con strumenti come
git filter-repoinfluenza tutti nel tuo team. Per evitare caos:git push --forcecon cautela perché riscrive la cronologia remota.Usa --dry-run prima di comandi distruttivi
Prima di eseguire un comando che elimina file, testalo sempre:
Questo mostra cosa verrebbe eliminato senza cancellare nulla. Ecco perché secondo me dovresti sempre farlo:
Combina git rm --cached con .gitignore
Se hai committato per sbaglio qualcosa che non dovrebbe stare nel repo (come un file di config o dei log), risolvi in due passaggi:
Questo dice a Git di smettere di tracciare il file ma lo lascia sul tuo computer.
gitignore:Ecco perché è utile:
.env,.logonode_modules).Casi limite in Git: staging e cartelle vuote
A volte la rimozione dei file non va come previsto. Potresti mettere in stage il file sbagliato o avere problemi con cartelle vuote.
Ecco come gestisco i casi limite più comuni.
Togliere dallo stage un file senza rimuovere le modifiche
Mettiamo che io esegua
git add .e metta in stage per errore un file che non volevo. Non voglio perdere le modifiche—voglio solo toglierlo dallo stage.Per sistemare, eseguo:
Questo toglie il file dallo stage ma mantiene le modifiche.
Per verificare, uso:
Ora il file dovrebbe risultare "modified" invece di "staged".
Mantenere cartelle vuote nel repo
Per impostazione predefinita, Git ignora le cartelle vuote. Se provo a fare commit di una cartella senza file al suo interno, Git la salta.
Ma a volte voglio mantenere quella cartella nel repo, ad esempio per futuri log o upload. La soluzione comune è aggiungere un file segnaposto chiamato
.gitkeep.Ecco come:
Questo rende la cartella "non vuota", così Git la traccia.
Nota:
.gitkeepnon è integrato in Git. È solo una convenzione. Puoi chiamare il file come vuoi, ma.gitkeepindica agli altri a cosa serve.Risoluzione dei problemi nella rimozione di file Git
Ecco alcuni problemi comuni che mi sono capitati rimuovendo file in Git e come risolverli.
Il file appare ancora nel repository remoto
Hai eliminato il file, fatto il commit, ma è ancora sul repo remoto. Forse hai dimenticato di fare push.
Quindi assicurati di eseguire:
Controlla anche:
Problemi con i submodule
I submodule sono repository Git dentro altri repository Git. Non si comportano come normali cartelle.
Se stai eliminando file dentro un submodule:
Se stai rimuovendo completamente il submodule:
.gitmodulese.git/configStato HEAD distaccato (detached)
In Git,
HEADdi solito punta al branch corrente. Ma a volte punta a uno specifico commit: si chiama HEAD distaccato.Succede se:
Controlla lo stato:
Se vedi:
Non sei su un branch e qualsiasi nuova modifica potrebbe andare persa quando cambi.
Ecco come puoi risolvere:
Se hai fatto modifiche e vuoi mantenerle, esegui:
Questo mette il tuo lavoro su un nuovo branch e lo salva.
Se hai già committato le modifiche e vuoi spostarle su un altro branch più tardi, fai così:
Se non hai fatto modifiche e vuoi solo uscire dall'HEAD distaccata, esegui:
Fatto. La tua HEAD ora è riattaccata e tutto torna normale.
Errori di permessi o di stato
A volte Git non riesce a eliminare un file, di solito su Windows. Può succedere se:
Ecco come risolvere:
Problemi di merge o rebase
Se vedi errori come:
Probabilmente sei nel mezzo di un merge o di un rebase.
Per terminare un rebase dopo aver risolto i conflitti:
Per annullare completamente rebase o merge:
Questo ripristina il repo a com'era prima dell'inizio del merge.
Vuoi buttare via tutte le modifiche locali e resettare la working directory?
Prova questo:
Questo riporta tutti i file al loro stato dell'ultimo commit.
Considerazioni finali
Quando rimuovi file in Git, è facile sbagliare se non stai attento. Un piccolo errore può portare a problemi più grandi: codice rotto, lavoro perso o confusione nel team. Per questo, prendi un attimo per ricontrollare quello che stai facendo.
Usa il comando giusto per la situazione. Se non sei sicuro di cosa farà, testalo prima con una dry run. E se lavori con altri, assicurati che tutti siano allineati.
Git può fare molto di più che eliminare file. Puoi eliminare branch, annullare errori usando reset e revert o vedere esattamente cosa è cambiato con git diff. Più impari, più il tuo flusso di lavoro diventa fluido.
Fai un passo alla volta. È così che si diventa bravi in queste cose.