Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git rm [-f] [-r] [--cached] [--] <file>...

Descrizione

Il comando git rm rimuove file dalla working tree e dall'index in un solo passo, mettendo in stage la cancellazione per il prossimo commit. Usare git rm è più comodo che rimuovere il file con rm e poi eseguire git add — anche se entrambi gli approcci producono lo stesso stato finale.

Il flag --cached è particolarmente utile: rimuove il file dall'index senza cancellarlo dalla working tree. Questo è lo strumento giusto quando hai accidentalmente committato un file (come un file di config con segreti, o un artefatto di build) e vuoi smettere di tracciarlo ma mantenerlo su disco.

Nell'uso quotidiano, git rm si integra con alias, editor e CI. Per il debug usa GIT_TRACE=1.

Capire come git rm interagisce con il modello dati di Git aiuta a prevedere i risultati e recuperare dagli errori.

Opzioni comuni

OpzioneDescrizione
-f, --forceSovrascrive i controlli di sicurezza se il file ha modifiche non committate.
-rRimuove ricorsivamente le directory.
--cachedRimuove solo dall'index; lascia stare il file nella working tree.
-n, --dry-runMostra cosa verrebbe rimosso senza farlo.
--ignore-unmatchEsce zero anche se nessun file corrisponde.
-q, --quietSopprime l'output.

Esempi

git rm old-file.txt
# Cancella il file e mette in stage la cancellazione

git rm -r build/
# Rimuove ricorsivamente una directory dal repo

git rm --cached secrets.env
# Smette di tracciare un file ma lo mantiene localmente
# Poi aggiungilo a .gitignore!

git rm -n '*.log'
# Anteprima di quali file di log verrebbero rimossi

Errori comuni

Il problema più grosso è dimenticare che git rm --cached ferma solo il tracking futuro — i commit passati contengono ancora il file. Se hai bisogno di eliminare un segreto dalla storia, usa git filter-repo o BFG. Un altro errore è eseguire git rm su un file con modifiche non in stage senza rendersi conto che quelle modifiche sono perse. Usa prima -n in caso di dubbio.

Comandi correlati

git add, git mv, git restore, git filter-repo