Ignorare le modifiche ai file con Git
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Git non deve tenere traccia di ogni file nel progetto. I file temporanei dell'ambiente di sviluppo, gli output di test e i log sono tutti esempi di file che probabilmente non devono essere rilevati.
È possibile usare vari meccanismi per comunicare a Git quali file nel progetto non tenere traccia e per assicurarsi che Git non invierà modifiche a tali file. Per i file che Git non tiene traccia, è possibile usare un .gitignore
file o exclude
. Per i file che Git tiene traccia, è possibile indicare a Git di interrompere il rilevamento e ignorare le modifiche.
In questo articolo vengono illustrate le operazioni seguenti:
- Ignorare le modifiche apportate ai file non registrati usando un
.gitignore
file. - Ignorare le modifiche apportate ai file non registrati usando un
exclude
file. - Arrestare il rilevamento di un file e ignorare le modifiche usando il
git update-index
comando . - Arrestare il rilevamento di un file e ignorare le modifiche usando il
git rm
comando .
Usare un file con estensione gitignore
È possibile indicare a Git di non tenere traccia di determinati file nel progetto aggiungendo e configurando un file con estensione gitignore . Le voci in un .gitignore
file si applicano solo ai file non registrati. Non impediscono a Git di segnalare modifiche ai file rilevati. I file rilevati sono file di cui è stato eseguito il commit ed esistono nell'ultimo snapshot Git.
Ogni riga di un .gitignore
file specifica un criterio di ricerca di file relativo al percorso del .gitignore
file. La sintassi .gitignore è flessibile e supporta l'uso di caratteri jolly per specificare singoli o più file in base al nome, all'estensione e al percorso. Git associa .gitignore
i modelli di ricerca ai file nel progetto per determinare quali file ignorare.
In genere, si aggiunge un .gitignore
file alla cartella radice del progetto. Tuttavia, è possibile aggiungere un .gitignore
file a qualsiasi cartella del progetto per informare Git quali file ignorare all'interno di tale cartella e le relative sottocartelle in qualsiasi profondità annidata. Per più .gitignore
file, i criteri di ricerca di file specificati da un .gitignore
file all'interno di una cartella hanno la precedenza sui modelli specificati da un .gitignore
file all'interno di una cartella padre.
È possibile creare manualmente un .gitignore
file e aggiungervi voci del criterio di file. In alternativa, è possibile risparmiare tempo scaricando un .gitignore
modello per l'ambiente di sviluppo dal repository GitHub gitignore. Uno dei vantaggi dell'uso di un .gitignore
file è che è possibile eseguire il commit delle modifiche e condividerle con altri utenti.
Nota
Visual Studio crea automaticamente un .gitignore
file per l'ambiente di sviluppo di Visual Studio quando si crea un repository Git.
Visual Studio 2022 offre un'esperienza di controllo della versione Git tramite il menu Git, le modifiche Git e i menu di scelta rapida in Esplora soluzioni. Visual Studio 2019 versione 16.8 offre anche l'interfaccia utente Git di Team Explorer . Per altre informazioni, vedere la scheda Visual Studio 2019 - Team Explorer .
Nella finestra Modifiche Git fare clic con il pulsante destro del mouse su qualsiasi file modificato che si vuole ignorare da Git e quindi scegliere Ignora questo elemento locale o Ignora questa estensione. Queste opzioni di menu non esistono per i file rilevati.
L'opzione Ignora questa voce locale aggiunge una nuova voce al .gitignore
file e rimuove il file selezionato dall'elenco dei file modificati.
L'opzione Ignora questa estensione aggiunge una nuova voce al .gitignore
file e rimuove tutti i file con la stessa estensione del file selezionato dall'elenco dei file modificati.
Entrambe le opzioni creano un .gitignore
file se non esiste già nella cartella radice del repository e aggiunge una voce.
Modificare un file gitignore
Ogni voce nel .gitignore
file è: un criterio di ricerca di file che specifica i file da ignorare, un commento che inizia con un segno di numero (#
) o una riga vuota (per la leggibilità). La .gitignore
sintassi è flessibile e supporta l'uso di caratteri jolly per specificare singoli o più file in base al nome, all'estensione e al percorso. Tutti i percorsi per i modelli di ricerca di file sono relativi al .gitignore
file.
Ecco alcuni esempi di modelli di ricerca di file comuni:
# Ignore all files with the specified name.
# Scope is all repo folders.
config.json
# Ignore all files with the specified extension.
# Scope is all repo folders.
*.json
# Add an exception to prevent ignoring a file with the specified name.
# Scope is all repo folders.
!package.json
# Ignore a file with the specified name.
# Scoped to the 'logs' subfolder.
/logs/test.logfile
# Ignore all files with the specified name.
# Scoped to the 'logs' subfolder and all folders beneath it.
/logs/**/test.logfile
# Ignore all files in the 'logs' subfolder.
/logs/
Non appena si modifica un .gitignore
file, Git aggiorna l'elenco dei file ignorati.
Nota
Gli utenti di Windows devono usare una barra (/
) come separatore di percorso in un .gitignore
file, anziché usare una barra rovesciata (\
). Tutti gli utenti devono aggiungere una barra finale quando si specifica una cartella.
Usare un file .gitignore globale
È possibile designare un .gitignore
file come file ignorato globale che si applica a tutti i repository Git locali. A tale scopo, usare il git config
comando come segue:
git config core.excludesfile <gitignore file path>
Un file globale .gitignore
consente di assicurarsi che Git non esegua il commit di determinati tipi di file, ad esempio i file binari compilati, in qualsiasi repository locale. I modelli di ricerca di file in un file specifico .gitignore
del repository hanno la precedenza sui modelli in un file globale .gitignore
.
Usare un file di esclusione
È anche possibile aggiungere voci per i modelli di ricerca di file al exclude
file nella .git/info/
cartella del repository locale. Il exclude
file indica a Git quali file non registrati ignorare. Usa la stessa sintassi per i modelli di ricerca di file come file .gitignore
.
Le voci in un exclude
file si applicano solo ai file non registrati. Non impediscono a Git di segnalare modifiche ai file di cui è già stato eseguito il commit. Esiste un exclude
solo file per repository.
Poiché Git non esegue il commit o il push del exclude
file, è possibile usarlo in modo sicuro per ignorare i file nel sistema locale senza influire su altri utenti.
Usare git update-index per ignorare le modifiche
A volte è utile arrestare temporaneamente il rilevamento di un file di repository locale e fare in modo che Git ignori le modifiche apportate al file. Ad esempio, è possibile personalizzare un file di impostazioni per l'ambiente di sviluppo senza il rischio di eseguire il commit delle modifiche. A tale scopo, è possibile eseguire il git update-index
comando con il skip-worktree
flag :
git update-index --skip-worktree <file path>
Per riprendere il rilevamento, eseguire il git update-index
comando con il --no-skip-worktree
flag .
In alternativa, è possibile arrestare temporaneamente il rilevamento di un file e fare in modo che Git ignori le modifiche apportate al file usando il git update-index
comando con il assume-unchanged
flag . Questa opzione è meno efficace del skip-worktree
flag, perché un'operazione Git pull
che modifica il contenuto del file può ripristinare il assume-unchanged
flag.
git update-index --assume-unchanged <file path>
Per riprendere il rilevamento, eseguire il git update-index
comando con il --no-assume-unchanged
flag .
Usare git rm per ignorare le modifiche
Le voci in un .gitignore
file o exclude
non hanno alcun effetto sui file già tracciati da Git. Git tiene traccia dei file di cui è stato eseguito il commit in precedenza. Per rimuovere definitivamente un file dallo snapshot Git in modo che Git non lo tenga più traccia, ma senza eliminarlo dal file system, eseguire i comandi seguenti:
git rm --cached <file path>
git commit <some message>
Usare quindi una .gitignore
voce di file o exclude
per impedire a Git di segnalare modifiche al file.