Global Git ignora


841

Voglio configurare Git per ignorare globalmente determinati file.

Ho aggiunto un .gitignorefile alla mia home directory ( /Users/me/) e vi ho aggiunto la seguente riga:

*.tmproj

Ma non ignora questo tipo di file, hai idea di cosa sto facendo di sbagliato?


7
Potresti anche voler dare un'occhiata ai suggerimenti ignorati di GitHub - help.github.com/articles/ignoring-files ; hanno un repository di schemi ignorati comuni
drzaus,

6
Potresti anche considerare di usare solo un .gitignore all'interno di singoli progetti. Altrimenti se tu (o qualcun altro) clonate il progetto su un nuovo sistema, dovrete anche ricreare ogni volta il file e la configurazione globali esclusi.
Stan Kurdziel,

25
I file ignorabili che il progetto crea dovrebbero trovarsi nel file .gitignore del progetto, i file ignorabili che le cose create sulla tua macchina dovrebbero andare nel .gitignore globale (come i file temporanei editor / IDE e simili).
Pylinux,

2
Le directory di ambiente virtuale Python sono un caso d'uso comune per le voci nel mio file excles globale o locale.
Spezzatino

10
@Pylinux In realtà, per git-scm , IDE personale e cose specifiche del flusso di lavoro possono andare nel file non tracciato .git/info/excludenel repository, quindi non deve necessariamente andare nel file globale. Inoltre, il file gitignore globale predefinito e automatico è $HOME/.config/git/ignore.
Acumenus,

Risposte:


1422

È necessario impostare il core.excludesfilefile di configurazione globale in modo che punti a questo file di ignorazione globale.

per esempio

* nix o Windows git bash:

git config --global core.excludesfile '~/.gitignore'

Windows cmd:

git config --global core.excludesfile "%USERPROFILE%\.gitignore"

Windows PowerShell:

git config --global core.excludesfile "$Env:USERPROFILE\.gitignore"

Per Windows è impostato sulla posizione C:\Users\{myusername}\.gitignore. Puoi verificare che il valore di configurazione sia corretto facendo:

git config --global core.excludesfile

Il risultato dovrebbe essere il percorso esteso al profilo del tuo utente .gitignore. Assicurarsi che il valore non contenga la %USERPROFILE%stringa non espansa .

Importante : i comandi precedenti imposteranno solo la posizione del file ignore che git utilizzerà. Il file deve ancora essere creato manualmente in quella posizione e popolato con l'elenco ignore. (dal commento di Muruge )

Puoi leggere il comando su https://help.github.com/articles/ignoring-files/#create-a-global-gitignore


2
Finché non è nel tuo HEADo nel tuo indice, non dovrebbe fare alcuna differenza se il file è stato tracciato una volta o no. Può essere utile se si aggiunge l'uscita di git status, git config core.excludesfilealla tua domanda.
CB Bailey

2
Posso usare #all'inizio delle righe all'interno ~/.gitignoreper aggiungere commenti all'interno del file ignore globale?
Dror,

9
Le versioni recenti del toolkit ufficiale di Git Windows usano invece la sintassi * nix; se questa linea non funziona, prova invece * nix.
Andy Jones,

9
Non sono riuscito a farlo funzionare usando la %USERPROFILE%variabile. Ho dovuto inserire il percorso completo del file usando i separatori di directory * nix. es. core.excludesfile C: /Users/User/.gitignore
Vince il

21
Impossibile farlo funzionare con la variabile% USERPROFILE%. Ho dovuto usare git config --global core.excludesfile '~ / .gitignore' in Windows per impostarlo sulla posizione C: / users / {myusername} /. Gitignore. Inoltre il comando sopra imposterà solo la posizione del file ignore che git utilizzerà. Il file deve ancora essere creato manualmente in quella posizione e popolato con l'elenco ignore.
Muruge

301

Prima di riconfigurare il file di esclusione globale, potresti voler controllare a cosa è attualmente configurato, usando questo comando:

git config --get core.excludesfile

Nel mio caso, quando l'ho eseguito ho visto che il mio file di esclusione globale era configurato

~ / .Gitignore_global
e c'erano già un paio di cose elencate lì. Quindi, nel caso di una determinata domanda, potrebbe avere senso verificare prima un file di esclusione esistente e aggiungere la nuova maschera di file ad esso.


2
funziona alla grande. Installa il tuo file gitignore globale come al solito; una voce per riga.
Maarten Hartman,

237

Sebbene le altre risposte siano corrette, stanno impostando il valore di configurazione globale, mentre esiste un percorso git predefinito per il file globale git ignore:

* Nix:

~/.config/git/ignore

Finestre:

%USERPROFILE%\git\ignore

Potrebbe essere necessario creare gitdirectory e ignorefile, ma poi puoi inserire i tuoi ignoranti globali in quel file e il gioco è fatto!

fonte

Il file in cui posizionare un pattern dipende da come deve essere utilizzato il pattern.

...

  • I pattern che un utente vuole che Git ignori in tutte le situazioni (ad es., Backup o file temporanei generati dall'editor preferito dell'utente) generalmente vanno in un file specificato core.excludesFiledall'utente ~/.gitconfig. Il suo valore predefinito è $ XDG_CONFIG_HOME / git / ignore. Se $ XDG_CONFIG_HOME non è impostato o vuoto, al suo posto viene utilizzato $ HOME / .config / git / ignore.

1
Questo è fantastico; Non lo sapevo ... ma questo non è un file generato? Può essere sovrascritto quando aggiorni / reinstalli?
danielsdesk,

1
Credo che il file sia creato / modificato eseguendo determinati gitcomandi. Dal momento che è un file di impostazioni nella directory di ciascun utente, non penso che debba mai essere sovrascritto.
Steve Jorgensen,

1
Sono d'accordo che questa dovrebbe essere la risposta accettata, tuttavia non ho trovato questo in -t̶h̶e̶ ̶d̶o̶c̶u̶m̶e̶n̶t̶a̶t̶i̶o̶n̶ un articolo di aiuto ( help.github.com/articles/ignoring-files )
AVProgrammer

1
@AVProgrammer Ho appena modificato la risposta per riflettere il cambiamento nell'organizzazione del documento di origine.
Steve Jorgensen,

7
Sembra che su Windows sia anche il percorso ~/.config/git/ignore.
Suriv

40

Per creare da zero gitignore globale:

$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
  1. La prima riga cambia directory in C:/Users/User
  2. Successivamente si crea un file vuoto con .gitignore_globalestensione
  3. E infine l'impostazione globale ignora quel file.
  4. Quindi dovresti aprirlo con un qualche tipo di blocco note e aggiungere le regole ignora necessarie.

18

Da qui .

Se crei un file nel tuo repository chiamato .gitignore git userà le sue regole quando guarderà i file da impegnare. Nota che git non ignorerà un file che era già stato tracciato prima che una regola fosse aggiunta a questo file per ignorarlo. In tal caso, il file deve essere non tracciato, generalmente con:

git rm --cached filename

È il tuo caso?


Sto cercando di ignorare a livello globale, il che non sta accadendo !!
Lieve Fuzz,

@MildFuzz su Linux il core.excludesfilefile sembra essere interpretato in modo diverso rispetto a un .gitignorefile. Se vuoi ignorare un'intera directory inserisci semplicemente il nome della directory come .vscode/invece di.vscode/*
Aspiring Dev

11

Se si utilizza il sistema Unix, è possibile risolvere il problema in due comandi. Dove il primo inizializza le configurazioni e il secondo modifica il file con un file da ignorare.

$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore

10
  1. Crea un file .gitignore nella tua home directory
touch ~/.gitignore
  1. Aggiungi file ad esso (le cartelle non sono riconosciute )

Esempio

# these work
*.gz
*.tmproj
*.7z

# these won't as they are folders
.vscode/
build/

# but you can do this
.vscode/*
build/*
  1. Controlla se un git ha già un gitignore globale
git config --get core.excludesfile
  1. Di 'a git dove si trova il file
git config --global core.excludesfile '~/.gitignore'

Ecco!!


"Le cartelle non vengono riconosciute" - È sbagliato, le cartelle funzionano bene ...
TobiX,

7

Ricorda che esegui il comando

git config --global core.excludesfile '~/.gitignore'

imposterà semplicemente il file globale, ma NON lo creerà. Per Windows controlla la directory Users per il .gitconfigfile e modificalo in base alle tue preferenze. Nel mio caso è così:

[core]
  excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore

3

Sono in grado di ignorare un .tmprojfile includendo uno .tmprojo *.tmprojnel mio /users/me/.gitignore-globalfile.

Si noti che il nome del file .gitignore-globalnon lo è .gitignore. Non ha funzionato includendo .tmprojo *.tmprojin un file chiamato .gitignorenella /users/medirectory.


4
Non importa come chiami il tuo file ignore globale purché corrisponda alla tua core.excludesfileconfigurazione.
CB Bailey,

Ah! Buon punto @CharlesBailey. Tuttavia, questo può essere qualcosa che lo scrittore potrebbe voler controllare. Il motivo per cui il .tmprojfile non viene ignorato potrebbe essere perché l'utente excludesfilenon lo è .gitignore.
Sri Sankaran,

Immagino abbia pensato che l'utente sarebbe stato abbastanza intelligente da rendersene conto.
WORMSS,

2

È necessario creare un file di esclusione per questo. Dai un'occhiata a questo riassunto che è piuttosto autoesplicativa.

Per rispondere alla tua domanda, tuttavia, potresti dover deindicizzare il .tmprojfile (se l'hai già aggiunto all'indice) con git rm --cached path/to/.tmprojo git adde il committuo .gitignorefile.


Sto cercando di farlo a livello globale, non solo per pronti contro termine
Mild Fuzz,

Sì, questo è ciò che ho collegato in sostanza. Ero un po 'confuso dalla domanda originale. Hai fatto il git rm --cached?
Nic,

sì, ci ho provato. Mi sembra di aver seguito tutti i consigli consigliati! Cosa mi sto perdendo?
Lieve Fuzz,

Come suggerito, aggiungerei il tuo stato git ed escluderei le informazioni alla domanda :)
Nic

2

su Windows sottosistema Linux ho dovuto passare alla radice sottosistema da cd ~/allora touch .gitignoree quindi aggiornare la configurazione globale gitignore lì.

Spero che aiuti qualcuno.


0

Se stai usando VSCODE, puoi ottenere questa estensione per gestire l'attività per te. Controlla il tuo spazio di lavoro ogni volta che salvi il tuo lavoro e ti aiuta a ignorare automaticamente i file e le cartelle specificati nelle impostazioni di vscode . Json ignoreit (estensione vscode)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.