Che cos'è esattamente .gitignore?


212

Ho appena creato un repository Github e mi chiedevo a cosa servisse il .gitignorefile. Ho iniziato non creandone uno, ma ne ho aggiunto uno a causa del fatto che la maggior parte dei repository ne ha uno. Devo averne uno? Posso / devo semplicemente ignorarlo o ha un uso? Ho fatto alcune ricerche sull'argomento ma non sono riuscito a trovare una spiegazione concreta.

Risposte:


175

.gitignoredice a git quali file (o modelli) dovrebbe ignorare. Di solito viene utilizzato per evitare il commit di file temporanei dalla directory di lavoro che non sono utili ad altri collaboratori, come prodotti di compilazione, creazione di file IDE temporanei, ecc.

Puoi trovare tutti i dettagli qui .


Quindi, se si crea un .gitignore in un nuovo repository su github.com, quindi si esegue un git init e git add . sul tuo computer locale - non ancora connesso a .gitignore in quanto non è ancora connesso a quel repository - come funziona? Ha effetto quando eseguo un commit git? O?
Xonatron,

a cosa _._gitignoreserve? viene utilizzato solo quando gitignore è in una directory secondaria.?
Saikat Chakrabortty il

Quindi rimane localmente, ma non viene spinto all'origine? Quindi, se alcuni utenti scaricano repository github, viene scaricato anche quel file segreto?
Incontra Zaveri

Cosa significa ignorare ? Chi / cosa / quando ignora? So cosa significa la parola ignora ma non trovo una descrizione chiara di cosa significhi ignorare nel contesto di Git. Ovviamente il termine è totalmente comprensibile da parte di persone che lo comprendono, ma qualsiasi cosa scritta per definire qualcosa per persone che non lo sanno già deve spiegare tutti i termini che hanno definizioni uniche per il contesto.
user34660

1
@ user34660 Ignora significa solo che - Git non terrà traccia delle modifiche nei file specificati da (i pattern) nel .gitignorefile. Anche se li cambi, git non li mostrerà come modificati.
Mureinik,

42

È un elenco di file che Git deve ignorare nella directory di lavoro.

Supponi di essere su un Mac e di avere file .DS_Store in tutte le tue directory. Volete che git li ignori, quindi aggiungete .DS_Store come linea in .gitignore. E così via.

I documenti git ti diranno tutto ciò che devi sapere: http://git-scm.com/docs/gitignore


2
Il tuo .DS_Storescenario finalmente ha risuonato con me poiché immagino non stavo cercando di capire questo concetto perché non avevo ancora avuto bisogno di usarlo in un progetto. Grazie. Ho finito per usare questo come punto di partenza mentre uso tutti i diversi sistemi operativi rilevando in particolare la # OS generated files #sezione.
phoenixlaef,

2
So di essere in ritardo su questa discussione, ma grazie @AndyLester! Sono un principiante quando si tratta di programmazione e Github. Trovo che molte delle risposte scritte per rispondere a questo tipo di domande siano piene di termini che il principiante potrebbe non capire (ad esempio, prodotti di compilazione, file IDE temporanei creati .... che cosa sono queste cose!). Tuttavia, la descrizione del tuo Mac è perfetta nella sua elegante semplicità!
Vesuccio

21

Quando si esegue un commit, non si desidera includere accidentalmente file temporanei o creare cartelle specifiche. Quindi utilizzare un .gitignoreelenco di elementi che si desidera ignorare dal commettere.

Inoltre, git status è soprattutto uno dei comandi più utilizzati in cui si desidera git statuselencare i file che sono stati modificati.

Si vorrebbe che il proprio git statuselenco look pulito da file indesiderati. Ad esempio, ho cambiato a.cpp, b.cpp, c.cpp, d.cpp & e.cppvoglio che io git statuselencassi quanto segue:

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp

Non vogliogit status elencare i file modificati come questo con i file oggetto intermedio e i file dalla cartella build

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp
.DS_Store
/build/program.o
/build/program.cmake

Quindi, per liberarmi git statusdi elencare questi file temporanei intermedi e commetterli accidentalmente nel repository, dovrei crearne uno .gitignoreche tutti fanno. Tutto quello che devo fare è elencare i file e le cartelle .gitignoreche desidero escludere dal commit.

Di seguito è riportato il mio .gitignoreper evitare il commit di file non necessari

/*.cmake
/*.DS_Store
/.user
/build

7

Ci sono file che non vuoi che Git esegua il check-in. Git vede ogni file nella tua copia di lavoro come una delle tre cose:

  1. monitorato - un file che è stato precedentemente messo in scena o impegnato;
  2. non tracciato: un file che non è stato messo in scena o eseguito il commit; o
  3. ignorato - un file che Git è stato esplicitamente detto di ignorare.

I file ignorati sono generalmente artefatti creati e file generati dalla macchina che possono essere derivati ​​dalla fonte del repository o che altrimenti non dovrebbero essere sottoposti a commit. Alcuni esempi comuni sono:

  • cache di dipendenza, come il contenuto di /node_moduleso/packages
  • codice compilato, come ad esempio .o, .pyce .classfile
  • le directory di output di generazione, come ad esempio /bin, /outo/target
  • file generati a runtime, come ad esempio .log, .locko.tmp
  • file di sistema nascosti, come .DS_StoreoThumbs.db
  • file di configurazione IDE personali, ad esempio .idea/workspace.xml

I file ignorati vengono tracciati in un file speciale denominato .gitignorearchiviato nella radice del repository. Non esiste un comando git ignore esplicito: al contrario, il .gitignorefile deve essere modificato e sottoposto a commit manualmente quando si hanno nuovi file che si desidera ignorare. .gitignorei file contengono modelli che corrispondono ai nomi dei file nel repository per determinare se devono essere ignorati o meno. Ecco un file di esempio.gitignore . Per maggiori dettagli guarda questo link


5

Scopo principale di .gitignore - in modo da evitare l'aggiunta di file non pertinenti ecc. Git

Ho molti appunti personali / scarabocchi in alcuni archivi: sono utili per me ma non per nessun altro. Non vorrei che fosse caricato su github perché avrebbe semplicemente confuso tutti quelli che lo leggevano. La cosa buona è che posso chiedere a git di "ignorare" quei file. L'unico costo di questo approccio è che non sarò in grado di recuperare quelle note se il mio computer si arresta in modo anomalo, ecc.

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.