Skip to content
Sintassi6 min di letturaVerificato con Git 2.40+

Guida alla sintassi e alle regole di .gitignore

Analisi tecnica dettagliata delle regole di formattazione, caratteri jolly glob, slash iniziali e finali, regole di negazione e la trappola delle cartelle ignorate.

1. Formattazione di base: Commenti e righe vuote

Ogni riga di un file .gitignore rappresenta una regola indipendente retta da tre principi fondamentali:

  • Le righe vuote vengono ignorate e fungono da separatori visivi per migliorare la leggibilità del file.
  • Le righe che iniziano con # sono commenti e non producono alcun effetto sul controllo di versione.
  • Gli spazi al termine della riga vengono ignorati a meno che non siano preceduti da un carattere di escape con barra rovesciata (\ ).
gitignore
# Ignore compiled Python bytecode
__pycache__/
*.py[cod]

# Ignore local secret configurations
.env
.env.local

2. Caratteri jolly glob (*, ?, [ ])

Git supporta i pattern shell standard di globbing all'interno di un singolo livello di cartella:

  • * (Asterisco): Corrisponde a zero o più caratteri in un singolo segmento. *.log corrisponde a error.log, ma non a cartella/error.log.
  • ? (Punto interrogativo): Corrisponde esattamente a un singolo carattere. test?.js corrisponde a test1.js, ma non a test12.js.
  • [abc] (Intervallo di caratteri): Corrisponde a qualsiasi carattere racchiuso tra parentesi quadre. *.[oa] corrisponde a file che terminano con .o o .a.

3. Slash iniziali, finali e intermedi

La posizione dello slash (/) modifica radicalmente la modalità con cui Git interpreta il percorso:

  • Slash finale (logs/): Limita il pattern esclusivamente alle cartelle. Ignorerà una directory chiamata logs/, ma non un normale file denominato logs.
  • Slash iniziale (/config.json): Ancora la corrispondenza alla radice del percorso in cui risiede il file .gitignore. Ignora /config.json ma continua a tracciare /sub/config.json.
  • Slash intermedio (docs/*.html): Ancora il pattern come percorso relativo alla posizione del file .gitignore.

4. Doppio asterisco ricorsivo (**)

Il doppio asterisco consente di effettuare corrispondenze attraverso livelli arbitrari di cartelle nidificate:

  • **/cache: Corrisponde a qualsiasi cartella o file denominato cache in qualunque punto del repository (cache, src/cache, a/b/c/cache).
  • logs/**: Corrisponde a tutti i file e a tutte le sottocartelle all'interno di logs/, indipendentemente dalla profondità.
  • a/**/b: Corrisponde ad a/b, a/x/b, a/x/y/b e così via.

5. Negazione (!) e la trappola delle cartelle ignorate

Il punto esclamativo (!) nega una regola precedente, ordinando a Git di tornare a tracciare un file escluso.

La trappola delle cartelle in Git (Perché !file.txt fallisce)

Per motivi di efficienza, Git evita di scansionare il contenuto di una cartella una volta che questa è stata esclusa. Se build/ viene ignorata, Git non reincluderà MAI un file al suo interno tramite !build/importante.txt.

Per reincludere un file all'interno di una cartella ignorata, devi escludere il contenuto della cartella anziché la cartella stessa:

gitignore
# INCORRECT: Will NOT work because parent directory is skipped
node_modules/
!node_modules/my-local-package

# CORRECT: Ignore contents of directory, then whitelist the specific target
node_modules/*
!node_modules/my-local-package/

6. Verificare le regole con git check-ignore

Quando desideri verificare quale riga esatta sta ignorando o consentendo un file, esegui il comando diagnostico di Git con il flag -v:

bash
# Shows the exact .gitignore file and line number responsible
git check-ignore -v src/temp/debug.log

Domande Frequenti

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

Qual è la differenza tra * e ** in .gitignore?

L'asterisco singolo (*) corrisponde a caratteri all'interno di un singolo livello di cartella. Il doppio asterisco (**) agisce ricorsivamente su più livelli di directory.

Perché !cartella/file.txt non funziona se cartella/ è ignorata?

Git non analizza l'interno delle cartelle ignorate. Ignora il contenuto con 'cartella/*' e poi dichiara l'eccezione.

Come individuare quale regola esclude un determinato file?

Esegui 'git check-ignore -v <percorso>'. Git restituirà il file .gitignore e la riga esatta responsabile dell'esclusione.

← Leggi guideApri nel generatore completo