Skip to content
Risoluzione Problemi5 min di letturaVerificato con Git 2.40+

Come ignorare file già tracciati in Git

La guida definitiva per risolvere uno dei dubbi più frequenti in Git: smettere di tracciare file sensibili o temporanei mantenendo le copie locali.

1. Perché .gitignore si applica solo ai file non tracciati

Per progettazione, il file .gitignore definisce regole valide esclusivamente per i file non tracciati (untracked). Nel momento in cui un file viene aggiunto con git add e registrato in un commit, Git ne monitora attivamente ogni modifica nel suo indice.

Git non smetterà mai di tracciare un file esistente per il solo fatto di aver inserito una nuova regola in .gitignore. Per applicare l'esclusione, è necessario rimuovere esplicitamente il file dall'indice di Git preservandone la copia fisica sul proprio disco.

La regola d'oro di .gitignore

.gitignore impedisce l'aggiunta involontaria di nuovi file al repository; non interrompe automaticamente il tracciamento di file già memorizzati da Git.

2. Metodo 1: Interrompere il tracciamento di un singolo file

Utilizza l'opzione --cached con git rm per eliminare il file dall'indice senza toccare la copia salvata sul disco locale:

bash
# 1. Assicurati che il file sia presente nel file .gitignore
echo ".env" >> .gitignore

# 2. Rimuovi il file solo dall'indice di Git
git rm --cached .env

# 3. Conferma la rimozione con un commit
git commit -m "Stop tracking .env file"

3. Metodo 2: Rimuovere un'intera cartella ricorsivamente

Se è stata committata per errore un'intera cartella come build/ o node_modules/, specifica l'opzione ricorsiva -r assieme a --cached:

bash
# 1. Aggiungi la cartella al file .gitignore
echo "build/" >> .gitignore

# 2. Rimuovi ricorsivamente la cartella dall'indice
git rm -r --cached build/

# 3. Esegui il commit
git commit -m "Stop tracking build/ output directory"

4. Metodo 3: Ripristinare la cache di tracciamento dell'intero repository

Se molti file sono stati committati prima di impostare .gitignore, la soluzione più ordinata consiste nell'azzerare l'indice e riaggiungere i file secondo le nuove regole:

bash
# 1. Verifica che lo stato di lavoro sia pulito o salvato con stash
git status

# 2. Rimuovi tutti i file dall'indice di Git
git rm -r --cached .

# 3. Riaggiungi i file applicando le regole del .gitignore
git add .

# 4. Registra l'indice aggiornato con un commit
git commit -m "Refresh repository tracking to match .gitignore"

5. Sicurezza locale e collaborazione in team

Attenzione: Sicurezza locale vs git pull degli altri sviluppatori

Il comando git rm --cached protegge il tuo file locale. Tuttavia, quando pubblichi questo commit, i colleghi che eseguiranno git pull riceveranno l'istruzione di eliminazione dal repository e Git rimuoverà la copia locale dalle loro macchine.

Informa sempre la squadra prima di rimuovere file di configurazione condivisi e predisponi un template pulito come .env.example.

Domande Frequenti

Risposte pratiche alle domande più comuni degli sviluppatori su regole .gitignore, cache e configurazione dei repository.

Perché Git continua a tracciare il mio file anche se è in .gitignore?

.gitignore agisce solo sui file non tracciati. Se il file è stato committato in precedenza, rimane nell'indice fino a quando non esegui 'git rm --cached <file>'.

Il comando git rm --cached cancella il file dal mio computer?

No. L'opzione --cached cancella il file unicamente dall'indice di Git. Il file fisico originale rimane intatto sul disco rigido.

Cosa accade quando gli altri membri del team eseguono git pull?

Poiché Git registra la cancellazione dal repository, git pull eliminerà quel file sui dispositivi dei colleghi. Fornisci un file .env.example per consentire loro di ripristinarlo.

← Leggi guideApri nel generatore completo