2015-01-08 3 views
138

Ho appena creato un repository Github e mi chiedevo a cosa servisse il file .gitignore. Ho iniziato non creando uno, ma ne ho aggiunto uno a causa del fatto che molti repository ne hanno uno. Devo averne uno? Posso/posso ignorarlo o ha un uso? Ho fatto qualche ricerca sull'argomento ma non sono riuscito a trovare una spiegazione concreta.Cos'è esattamente .gitignore?

risposta

106

.gitignore dice git quali file (o modelli) si dovrebbe ignorare. Solitamente viene utilizzato per evitare l'invio di file temporanei dalla directory di lavoro che non sono utili ad altri collaboratori, come prodotti di compilazione, creazione di file temporanei IDE, ecc.

È possibile trovare tutti i dettagli here.

+7

Funziona anche per password e sicurezza – TheBlackBenzKid

+0

Quindi, se crei un .gitignore in un nuovo repository su github.com, e poi fai un git init e git add *. * Sul tuo computer locale - non ancora connesso a. gitignore in quanto non è ancora collegato a quel repository - come funziona? Ha effetto quando eseguo un commit Git? O? – Xonatron

+0

per cosa viene usato '_._ gitignore'? è usato solo quando 'gitignore 'si trova in una sotto-dir.? –

29

È un elenco di file che si desidera ignorare nella directory di lavoro.

Supponiamo che tu sia su un Mac e che tu abbia file .DS_Store in tutte le tue directory. Vuoi che git li ignori, quindi aggiungi .DS_Store come una riga in .gitignore. E così via.

La documentazione git vi dirà tutto quello che dovete sapere: http://git-scm.com/docs/gitignore

+1

Il tuo scenario '.DS_Store' finalmente risuonava con me perché immagino di non essere aggrappato a questo concetto perché non avevo ancora bisogno di usarlo in un progetto. Grazie. Ho finito con l'utilizzo di [this] (https://gist.github.com/octocat/9257657) come punto di partenza poiché utilizzo tutti i diversi sistemi operativi notando in modo specifico la sezione '# File generati dal sistema operativo #'. – phoenixlaef

+1

So che sono in ritardo per questa discussione, ma grazie @AndyLester! Sono un novizio quando si parla di programmazione e Github. Trovo che molte delle risposte scritte per rispondere a questo tipo di domande siano piene di termini che i novizi potrebbero non comprendere (ad esempio, i prodotti di compilazione, gli IDE di file temporanei creano .... quali sono le h @ ll queste cose!). Tuttavia, la descrizione del tuo Mac è perfetta nella sua elegante semplicità! – Vesuccio

8

Quando si esegue un commit, non si desidera includere accidentalmente file temporanei o creare cartelle specifiche. Quindi utilizzare un .gitignore elencando gli elementi che si desidera ignorare dal commit.

Inoltre, soprattuttogit status è uno dei comandi più frequentemente utilizzati in cui si desidera git status per elencare i file che sono stati modificati.

Si si desidera il tuo elenco git status look pulito da file indesiderati. Per esempio, ho cambiato a.cpp, b.cpp, c.cpp, d.cpp & e.cpp voglio che il mio git status alla lista seguente:

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

Non voglio git status di elencare i file modificati come questo con i file oggetto intermedi & file dalla cartella di compilazione

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

Quindi, per liberarmi da git status per elencare questi file temporanei intermedi & accidentalmente nel repo, dovrei creare un .gitignore che tutti fanno. Tutto quello che devo fare è elencare le cartelle dei file & nello .gitignore che voglio escludere dal commit.

In seguito è la mia .gitignore per evitare di commettere i file non necessari

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

Ci sono file che non si desidera Git per il check-in a.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 impegnato; oppure
  3. ignorato - un file che a Git è stato esplicitamente detto di ignorare.

I file ignorati sono in genere artefatti generati e file generati dalla macchina che possono essere derivati ​​dall'origine del repository o che altrimenti non dovrebbero essere impegnati. Alcuni esempi comuni sono: cache

  • di dipendenza, come ad esempio il contenuto di /node_modules o /packages
  • codice compilato, come ad esempio .o, .pyc, e .class file
  • directory di output di generazione, come ad esempio /bin, /out, o /target
  • file generati in fase di esecuzione, ad esempio .log, .lock o .tmp
  • file di sistema nascoste, come ad esempio .DS_Store o Thumbs.db
  • file di configurazione IDE personali, come ad esempio .idea/workspace.xml

file ignorati sono tracciati in un file speciale denominato .gitignore che viene registrato alla radice del vostro repository. Non esiste un comando esplicito di git ignore: invece il file .gitignore deve essere modificato e impegnato manualmente quando si hanno nuovi file che si desidera ignorare. I file .gitignore contengono pattern corrispondenti ai nomi file nel repository per determinare se debbano o meno essere ignorati. Ecco un file sample.gitignore. Per ulteriori dettagli guarda questo link