Git Clean: Rimuovi File Non Tracciati e Tieni Ordinati i Repository

Quando si lavora su un repository Git, è comune accumulare file e directory non tracciati che non fanno parte del sistema di controllo versione del repository. Questi possono includere file temporanei, artefatti di build o altri file creati localmente che non sono stati committati. Nel tempo, questi file possono ingombrare la directory di lavoro, rendendo più difficile mantenere uno spazio di lavoro pulito e organizzato.

Per affrontare questo problema, Git fornisce il comando git clean, che rimuove file e directory non tracciati. In questa guida, ti mostrerò come utilizzare in modo sicuro git clean, le sue diverse opzioni e le migliori pratiche per evitare la cancellazione involontaria di file, mantenendo ordinato il tuo repository Git. Per ulteriori approfondimenti, ti consiglio di seguire i nostri corsi Fondamenti di Git e Introduzione ai concetti di GitHub per apprendere il controllo versione e la differenza tra Git e GitHub.

Comprendere git clean

Il comando git clean è uno strumento utile in Git che rimuove i file non tracciati dalla directory di lavoro. Il comando git clean è utile quando è necessario ripristinare la directory di lavoro a uno stato originale, ad esempio prima di passare a un’altra branch o dopo l’esecuzione di processi di build che generano file temporanei. Tuttavia, il comando git clean va usato con cautela poiché elimina definitivamente file e directory non tracciati senza spostarli nel cestino o nel riciclo bin.

A differenza di git reset o git checkout, che modificano file tracciati, git clean si occupa strettamente di file e directory che non sono sotto controllo di versione. Ciò include:

  • File temporanei creati dalle build

  • File di log o dati memorizzati nella cache

  • File elencati in .gitignore (se specificato esplicitamente con -x)

Il comando git clean è utile per mantenere un’area di lavoro ordinata, integrando altri comandi Git come git reset e git checkout, che gestiscono le modifiche nei file tracciati.

Trovo la Complete Git Cheat Sheet una pratica guida di riferimento per i comandi Git comuni.

Usi Comuni di git clean

Il comando git clean è uno strumento utile per mantenere una directory di lavoro pulita. Di seguito sono riportati alcuni casi d’uso comuni in cui git clean può rimuovere in modo sicuro file e directory non necessari.

Rimozione di file non tracciati

Quando si lavora in un repository Git, i file non tracciati possono accumularsi nel tempo. Le seguenti opzioni aiutano a rimuoverli:

  • git clean -f: Forza la rimozione di file non tracciati.

  • git clean -fd: Rimuove file non tracciati e directory non tracciate.

  • git clean -fx: Rimuove file non tracciati e ignorati come quelli elencati in .gitignore.

Tuttavia, è necessario fare attenzione quando si utilizza l’opzione -fx poiché rimuove anche i file ignorati. Verifica sempre utilizzando un’esecuzione di prova (git clean -n) prima di eseguire il comando.

Modalità interattiva

Il comando git clean -i abilita una modalità interattiva, consentendo agli utenti di rimuovere selettivamente i file non tracciati. Questa modalità è utile quando si desidera avere un maggiore controllo su quali file o directory vengano eliminati.

Supponiamo di lavorare su un progetto in cui hai già salvato le modifiche nella cartella Olympics. Tuttavia, hai aggiunto nuove fonti di dati denominate 2024_Data, e 2025_Data. Se esegui il comando git clean -i, otterrai il prompt che ti permette di scegliere tra le seguenti opzioni per eliminare le modifiche non tracciate.

  • clean:  Rimuovi i file selezionati

  • filter: Specifica un modello per i file da pulire

  • select: Scegli i singoli file per numero

  • quit: Uscire senza eliminare nulla

git clean -i modalità interattiva. Immagine dell’Autore.

Esecuzione a secco per sicurezza

Utilizzando l’opzione git clean -n è una misura di sicurezza utile poiché esegue una “esecuzione a secco”, visualizzando un elenco di file e directory non monitorati che verrebbero rimossi senza eliminarli effettivamente. Ciò consente di rivedere le modifiche prima di eseguirle.

Nell’esempio seguente, il comando git clean -n elenca i file che dovrebbero essere eliminati ma non li elimina.

git clean -n per esecuzione a secco. Immagine dell’Autore.

Combinare con il reset di git

Per ripristinare completamente una directory di lavoro Git, è possibile combinare il reset di git e git clean dove:

  • git reset --hard: Ripristina i file monitorati allo stato dell’ultimo commit, eliminando le modifiche locali.

  • git clean -fd: Rimuove file e directory non monitorati, lasciando solo i file commessi.

Questa combinazione assicura un ambiente di lavoro completamente pulito, rendendola utile quando si passa da un ramo all’altro, si annullano modifiche sperimentali o ci si prepara per un nuovo inizio.

Consulta il tutorial su Git Pull Force: Come Sovrascrivere un Ramo Locale con il Remoto per imparare le migliori pratiche per sovrascrivere le modifiche locali.

Guida Passo-Passo all’Uso di git clean

Segui questi passaggi per pulire in modo sicuro il tuo repository Git e rimuovere file e directory non desiderati non tracciati.

Passo 1: Controlla lo stato attuale

Prima di pulire, esegui git status per controllare lo stato attuale del tuo repository e vedere quali file non sono tracciati.

git status

git status per controllare lo stato attuale del repository. Immagine dell’Autore.

Passo 2: Anteprima della rimozione

Prima di eseguire qualsiasi comando di rimozione, utilizza git clean -n per visualizzare un’anteprima di ciò che verrà rimosso.

git clean -n

git clean -n per visualizzare cosa verrà eliminato. Immagine dell’Autore.

Passo 3: Rimuovere file non tracciati

Esegui git clean -f per rimuovere i file non tracciati se l’anteprima sembra corretta.

git clean -f

Rimuovi le modifiche non tracciate utilizzando git clean -f. Immagine dell’Autore.

Passo 4: Rimuovere directory non tracciate

Utilizza git clean -fd per rimuovere le directory non tracciate.

git clean -fd

Rimuovere le directory non tracciate utilizzando git clean -fd. Immagine dell’Autore.

Passaggio 5: Rimuovere i file ignorati

Per rimuovere sia i file non tracciati che quelli ignorati, utilizzare il comando git clean -fx.

git clean -fx

Passaggio 6: Utilizzare la modalità interattiva per la pulizia selettiva

Per avere maggiore controllo, prendere in considerazione l’uso di git clean -i per la rimozione interattiva. Questa modalità consente di selezionare singolarmente i file da eliminare.

Git clean -i

git clean -i modalità interattiva per la pulizia selettiva. Immagine dell’Autore.

git clean vs. Altri Comandi Git

Il comando git clean è spesso confrontato con altri comandi Git che modificano o ripristinano i file. La tabella qui sotto evidenzia le principali differenze:

Command Function
git clean Rimuove definitivamente i file e le directory non tracciati.
git reset Ripristina i file tracciati a uno stato precedente, influenzando le modifiche in fase di preparazione e quelle già commesse.
git checkout (o git restore) Scarta le modifiche nei file tracciati ma non li rimuove.
git stash Salva temporaneamente sia le modifiche tracciate che quelle non tracciate per un uso successivo.

Pratiche Ottimali di Git Clean

Per utilizzare git clean in modo sicuro ed efficace, seguire queste linee guida:

  • Utilizzare le simulazioni (-n) prima dell’eliminazione: Utilizzare sempre l’opzione git clean -n per eseguire una simulazione prima di eseguire git clean. Questo consente di visualizzare i file che verranno rimossi senza eliminarli effettivamente.

  • Stai attento ai file ignorati: Quando si utilizza git clean, fai attenzione all’opzione -x, che rimuove i file ignorati. Questo potrebbe eliminare file di configurazione importanti elencati in .gitignore. Se devi rimuovere i file ignorati, utilizza il comando git clean -fx.

  • Combinare con Git Reset per una Pulizia Completa: Per ripulire completamente il tuo repository, combina git reset con git clean, dove git reset --hard ripristina i file tracciati al loro stato dell’ultimo commit e git clean -fd rimuove i file e le directory non tracciati.

  • Usa la Modalità Interattiva (-i) per Eliminazioni più Sicure: Invece di rimuovere i file alla cieca, utilizza la modalità interattiva (git clean -i) per rivedere e selezionare i file da eliminare.

Potenzi Rischi e Precauzioni

Utilizzare git clean può essere rischioso se non fatto attentamente, poiché elimina permanentemente i file senza conservarli da nessuna parte. Ecco alcuni rischi chiave e precauzioni da considerare:

  • I file vengono eliminati definitivamente: A differenza di git stash, che salva temporaneamente le modifiche, git clean elimina definitivamente i file e le cartelle non tracciati. Una volta rimossi, questi file non possono essere recuperati tramite Git. Se potresti aver bisogno dei file in seguito, considera di fare uno stash o di eseguire un backup prima di eseguire il comando git clean.

  • Attenzione con l’opzione -x: Utilizzare git clean-fx rimuove i file ignorati, che potrebbero includere importanti file di configurazione elencati in .gitignore o cache di dipendenze come node_modules/ e venv/. Rimuovere accidentalmente questi file può causare problemi alle build o agli ambienti di sviluppo, quindi utilizza questa opzione solo quando necessario.

  • Esegui prima una simulazione: Esegui sempre una simulazione utilizzando git clean -n prima di eseguire git clean -f. Questo passaggio ti permette di visualizzare quali file verranno eliminati, aiutandoti ad evitare la rimozione accidentale di file importanti

  • Approcci Alternativi: In alcuni scenari, utilizzare git stash potrebbe essere una scelta migliore rispetto a git clean. Il comando git stash -u memorizza i file non tracciati, escludendo i file ignorati per un potenziale recupero in seguito, e il comando git stash pop ripristina le modifiche memorizzate se necessario. Questo metodo è utile quando devi passare a un’altra branch o pulire il tuo spazio senza perdere definitivamente le modifiche.

Conclusioni

Un codebase ben mantenuto mostra attenzione ai dettagli, efficienza e la capacità di gestire responsabilmente gli asset digitali. I datori di lavoro cercano sviluppatori che comprendano le migliori pratiche come l’utilizzo di git clean -n prima di eliminare i file, facendo attenzione ai file ignorati utilizzando -x, e facendo uso di alternative più sicure come git stash.

Seguire i corsi di DataCamp non è solo un ottimo modo per imparare, ma è anche un ottimo modo per segnalare ai datori di lavoro che prendi sul serio lo sviluppo software. A tal fine, consiglio di studiare il post del blog Top 20 Domande e Risposte di Intervista su Git per tutti i Livelli e di seguire il nostro nuovo percorso di abilità Fondamenti di Git per diventare un esperto di tutto ciò che riguarda Git.

Source:
https://www.datacamp.com/tutorial/git-clean