Quando useresti .git / info / exclude invece di .gitignore per escludere i file?


144

Sono un po 'confuso riguardo ai pro e contro dell'utilizzo .git/info/excludee .gitignoredell'esclusione dei file.

Entrambi sono a livello di repository / progetto, quindi in che modo differiscono e quando dovremmo utilizzarli .git/info/exclude?

Risposte:


196

Il vantaggio di .gitignoreè che può essere verificato nel repository stesso, a differenza .git/info/exclude. Un altro vantaggio è che puoi avere più .gitignorefile, uno all'interno di ogni directory / sottodirectory per le regole di ignoramento specifiche della directory, a differenza .git/info/exclude.

Quindi, .gitignoreè disponibile in tutti i cloni del repository. Pertanto, in grandi squadre tutte le persone stanno ignorando lo stesso tipo di file di esempio *.db, *.log. E puoi avere regole di ignorare più specifiche a causa di più .gitignore.

.git/info/excludeè disponibile solo per singoli cloni, quindi ciò che una persona ignora nel suo clone non è disponibile nel clone di un'altra persona. Ad esempio, se qualcuno lo utilizza Eclipseper lo sviluppo, potrebbe essere logico che lo sviluppatore aggiunga una .buildcartella .git/info/excludeperché altri sviluppatori potrebbero non utilizzare Eclipse.

In generale, i file / ignorare le regole che devono essere universalmente ignorati dovrebbero entrare .gitignore, altrimenti i file che si desidera ignorare solo sul clone locale dovrebbero andare.git/info/exclude


ma dovrebbe idealmente andare in ~ / .gitignore secondo la documentazione ufficiale di Git qui, git-scm.com/docs/gitignore
Devendra Swami,

@DevendraSwami Non ho ricevuto la voce specifica da inserire ~/.gitignorenel tuo commento sopra. La mia comprensione è che le regole Ignora possono essere a 3 livelli: $PROJECT/.git/info/excludeper le regole Ignora specifiche (progetto, utente), $PROJECT/<any number of directories>/.gitignoreche è per le regole Ignora specifiche progetto su qualsiasi utente ovunque (quando archiviato), ~/.gitignore per le regole Ignora specifiche utente per qualsiasi progetto per quell'utente su quella macchina. In base all'obiettivo, scegli il luogo in cui inserire una voce.
mu 無

sì, hai assolutamente ragione. Il mio commento era collegato a questa domanda stackoverflow.com/questions/59673991/…
Devendra Swami,

Mi scuso per il commento incompleto originale.
Devendra Swami,

2
@ShimmyWeitzhandler, Il file sln è già nel tuo repository? Quindi escludere o .ignore non impedirà a git di tracciare le sue modifiche. Prova una delle seguenti soluzioni: git rm --cached <path-name>lo eliminerà dal repository, ma lo manterrà localmente. git update-index --skip-worktree <path-name>ignorerà le modifiche al file, ma lo manterrà nel repository. Per curiosità: perché vuoi escludere il file sln? È una parte importante di una soluzione .Net, giusto?
Koen

36

Googled: 3 modi per escludere i file

  1. .gitignore si applica a tutti i cloni di questo repository (con versione, tutti lo avranno),
  2. .git/info/exclude si applica solo alla tua copia locale di questo repository (locale, non condiviso con altri),
  3. ~/.gitignore si applica a tutti i repository sul tuo computer (locale, non condiviso con altri).

3. in realtà richiede di impostare una configurazione sul tuo computer:

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

2
Sì, l'ho letto anch'io, ma volevo avere una prospettiva più pratica (del mondo reale) :-)
Parag

Il blog collegato chiama erroneamente il file .git/info/excludes, quando dovrebbe essere .git/info/exclude, come confermato dalla documentazione a cui si collega.
mwfearnley,

13
(spoiler: la terza via è ignorare il computer globale attraverso un'impostazione in ~ / .gitconfig)
hmijail piange le dimissioni il

@hmijail: grazie, ho incluso il tuo commento in questa risposta
LeGEC l'

12

Giusto per offrire la nostra esperienza (nel mondo reale): abbiamo iniziato a utilizzare .git / info / exclude quando dovevamo personalizzare alcuni file di configurazione su ciascun ambiente di sviluppo, ma volevamo comunque che la fonte fosse mantenuta nel repository e disponibile per altri sviluppatori.

In questo modo, i file locali, una volta clonati e modificati, possono essere esclusi dai commit senza influire sui file originali nel repository ma senza essere necessariamente ignorati nel repository.


4

Uso .gitignore per ignorare le regole specifiche del progetto . Utilizzare excludeo un file globale ignore per ignorare le regole specifiche del proprio ambiente .

Ad esempio, i miei file globali di ignorare ignorano i file temporanei generati da qualsiasi editor che sto usando, quella regola è specifica per il mio ambiente e potrebbe essere diversa per alcuni altri sviluppatori nello stesso progetto (forse usano un editor diverso). OTOH, i miei .gitignorefile di progetto ignorano cose come le chiavi API e creano artefatti: quelli sono per il progetto e dovrebbero essere gli stessi per tutti i membri del progetto.

Questo aiuta?

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.