Ogni repository Git ha bisogno di un file .gitignore. È l'elenco in testo semplice dei percorsi che Git *non* deve tracciare: artefatti di build, cartelle delle dipendenze, configurazioni dell'IDE, file spazzatura del sistema operativo come .DS_Store. Senza di esso, il primo commit si trascina dietro per sbaglio node_modules/, .env e target/, e rimediare a quel pasticcio è molto più fastidioso che preparare bene il file fin dall'inizio.
Ogni ecosistema ignora cose diverse e la maggior parte dei progetti ne usa diversi insieme. Una tipica app Node + TypeScript su un portatile macOS con VS Code richiede già l'unione di quattro elenchi di esclusioni diversi. Scriverlo a mano a memoria significa dimenticare coverage/, esporre un .env o fare commit di una .idea/ rimasta dalla configurazione JetBrains di un collega.
Per questo il generatore raccoglie template selezionati dal progetto di riferimento github/gitignore, le stesse regole dietro i suggerimenti automatici ufficiali di GitHub, e ti permette di combinarli. Spunta le caselle che ti servono e ottieni un unico .gitignore senza duplicati da incollare direttamente nel repository. Nessun account, nessun caricamento, tutto nel browser.
Cosa imparerai creando il tuo .gitignore
I pattern di .gitignore usano la sintassi glob: *.log ignora tutti i file di log, build/ ignora una cartella, !important.log riammette un file specifico anche se un glob lo include.
I pattern valgono in relazione alla posizione del file .gitignore: un .gitignore dentro src/ riguarda solo i file sotto src/.
I file già tracciati **non** vengono ignorati retroattivamente. Se fai commit di node_modules/ e poi lo aggiungi a .gitignore, devi comunque eseguire git rm -r --cached node_modules per smettere di tracciarlo.
Possono coesistere più file .gitignore: nella radice del repository, nelle sottocartelle e uno globale ~/.gitignore_global per gli strumenti personali come JetBrains o il tuo sistema operativo.
L'ordine conta per le negazioni: un !pattern successivo funziona solo se una regola precedente ha davvero ignorato il file. Negare una cartella non può riammettere un file al suo interno.
Come generare un .gitignore passo dopo passo
1
Scegli uno stack rapido (facoltativo)
Se il tuo progetto corrisponde a una combinazione comune (Next.js, Django, Rails), clicca un preset per spuntare in una volta tutte le caselle pertinenti. Poi togline o aggiungine un paio se hai altro.
2
Aggiungi i tuoi linguaggi
Ogni linguaggio ha artefatti da ignorare: Node ha node_modules/, Python ha __pycache__/ e i virtualenv, Java ha target/ e i file .class. Scegli i linguaggi che il tuo progetto compila davvero.
3
Aggiungi i tuoi framework
Oltre alle regole del linguaggio, i framework aggiungono le proprie cartelle di build: Next.js vuole .next/ e .vercel, Django vuole staticfiles/ e db.sqlite3, Rails vuole tmp/ e /storage/*. Spunta il framework se lo usi.
4
Aggiungi editor e sistema operativo
Aggiungi i template degli editor usati dal **team** (non solo i tuoi): se qualcuno usa JetBrains o Vim, includili. Poi aggiungi i sistemi operativi del team: macOS lascia in giro .DS_Store, Windows Thumbs.db, ed è facile fare commit di entrambi per sbaglio.
5
Copia o scarica
Il pannello di destra mostra l'output combinato e senza duplicati. Premi **Copia** per incollarlo direttamente in un .gitignore nella radice del repository, oppure **Scarica** per salvare subito il file.
Il minimo indispensabile per qualsiasi progetto Node condiviso con un collega su macOS. Anche un piccolo progetto personale dovrebbe avere queste regole: senza .DS_Store e node_modules/ combatterai conflitti inutili.
Un tipico backend Django sviluppato in PyCharm. Nota che il db.sqlite3 locale è ignorato: la produzione non lo usa mai, e fare commit espone dati di sviluppo e rompe i clone puliti dei colleghi.
Sovrascrivere una regola con una negazione
Ignora tutti i log tranne uno
*.log
!keep-me.log
La prima riga ignora tutti i file .log. La regola !keep-me.log poi riammette quel file specifico. Le negazioni funzionano solo per file che una regola precedente ha davvero ignorato: non puoi riammettere un file dentro una cartella ignorata.
Errori comuni con .gitignore
Aggiungere .gitignore a cose fatte e aspettarsi che i file già in commit spariscano. Non succede: devi eseguire git rm -r --cached <path> per smettere di tracciarli.
Fare commit di un .env anche una sola volta. Basta un commit per lasciare il segreto per sempre nella cronologia del repository. Aggiungi .env* a .gitignore **prima** del primo commit e cambia qualsiasi segreto sia finito dentro.
Dimenticare i file specifici del sistema operativo nei repository condivisi. Se anche un solo collega usa macOS e il repository non ha una regola per .DS_Store, quei file compariranno nel diff di ogni PR e rallenteranno la revisione.
Provare a riammettere un file dentro una cartella ignorata. Una volta ignorato build/, nessuna negazione può reincludere build/keep.txt: Git non guarda nemmeno dentro la cartella. Riorganizza o sposta il file fuori.
Mettere nel .gitignore del progetto le configurazioni di editor che usi solo tu. Usi JetBrains in un team che lavora con VS Code? Metti .idea/ nel tuo ~/.gitignore_global **globale**.
Domande frequenti sul generatore di .gitignore
Da dove vengono questi template .gitignore?
I template sono condensati dal progetto open source github/gitignore, la stessa fonte che GitHub usa quando spunti "add .gitignore" creando un nuovo repository. Abbiamo ridotto ciascuno alle regole che servono davvero ai team e li abbiamo raggruppati per categoria.
Devo fare commit del file .gitignore stesso?
Sì. .gitignore è fatto per essere sotto controllo di versione e condiviso con il team. È il *contratto* su cosa va tracciato e cosa no. L'eccezione sono le preferenze personali (per esempio il tuo editor preferito): quelle vanno nel tuo ~/.gitignore_global globale.
Come smetto di tracciare un file già in commit?
Prima aggiungilo a .gitignore, poi esegui git rm --cached <path> (o git rm -r --cached <folder>) per rimuoverlo dall'indice senza cancellarlo dal disco. Fai commit di entrambe le modifiche insieme, così i colleghi vedono l'aggiornamento.
Posso avere più file .gitignore in un repository?
Sì. Git cerca un .gitignore in ogni cartella e applica le regole a quel sottoalbero. È utile nei monorepo in cui frontend e backend hanno regole di esclusione molto diverse: tieni nella radice le regole comuni per sistema operativo ed editor e metti le regole dei linguaggi nella cartella di ciascun pacchetto.
Che differenza c'è tra .gitignore e .git/info/exclude?
.gitignore va in commit ed è condiviso con il team. .git/info/exclude esiste solo nel tuo clone locale ed è per le esclusioni personali che non vuoi pubblicare. Per esclusioni valide in tutti i tuoi repository, usa invece un ~/.gitignore_global globale.