2012-04-23 24 views
30

dosyalarında https://github.com/github/gitignore numaralı dosyalardan oluşan bir koleksiyon bulunmaktadır. Her göz ardı edilen dosyada, .gitignore numaralı bir uzantı var, ör. Java.gitignore, vim.gitignore. Bu dosyaları doğrudan bir çalışma alanına koyduğumda, çalışmıyorlar.Birden çok .gitignore dosyası kullanmanın en iyi yolu

Tek bir dosya .gitignore oluşturmak ve bileşen dosyalarını birleştirmek gerekli mi?

Buna göre, bir --global.gitignore dosyasını kullanırken, yapılandırma tek bir dosyaya işaret eder. Örneğin, tüm .gitignore dosyalarını bir Global/dizinine uygulamak istiyorum, bunları tek bir dosyada el ile birleştirmeliyim? Öyleyse, bu birleştirilmiş dosyayı "resmi" koleksiyonla güncel tutmak için ekstra çalışma.

Yinelemek gerekirse, farklı dizinlerde farklı .gitignore dosyalarını kullanabileceğimizi kabul ediyorum, ancak istediğim bu değil. Birden çok .gitignore dosyasını tek bir dizine uygulamak istiyorum.

cevap

30

açıklamak için: bir proje dosya adı verilir gitignore .gitignore


Arka plan: Bir .gitignore üst düzey ya da bir dizinin soyundan ya ile İçinde dizine karşılık gelir

.git deposu, yani ".git /" dizini.

Orada herhangi bir alt dizinleri birden .gitignore dosya olabilir ama En İyi Uygulama verilen bir proje kök bir.gitignore sahip ve gerektiğinde örneğin olarak bu dosya referans alt dizinleri sahip olmaktır olabilir images/yearly/recent Aksi takdirde göz ardı edilen bir şey bulmak için bakmak için "hangi" .gitignore dosya bilmek zor olabilir. Desenleri oldukça zor olabilecek dosya adları olarak kullanabilirsiniz.

Ben de yeni projelerle kullanmak için etrafında bir şablon tutmak olabilir ancak , makinenizde tüm projelerinde geçerli olan genel .gitignore dosyasını kullanarak kaçınarak öneriyoruz. Buradaki temel nokta, .gitignore ürününüzün diğer geliştiricilerinden farklı olabileceğidir (var olabilir veya olmayabilir) ve sonuç belirsizdir. Bunun bir istisnası örneği, makinemde açtığım herhangi bir projede istemediğim IDE dosyaları için global bir .gitignore10 dosyası kullanıyor; bu yüzden .idea/files (rubyMine) için bir girişle global bir .gitigore kullanıyorum.


sen listediğiniz şablonların niyet normalde belirli bir dilde dosya verilen için kod yazmaya olmasıdır. Buna göre, dile dayalı bir şablon sıklıkla yeterlidir.

kod tabanında birden çok dil varsa, o zaman kullanılan aşağıdaki gibi yollarla çok sayıda yapılabilir bu diller için birden .gitignore 'ın birleştirmek gerekir:

cat .gitignore1 .gitignore2 > .gitignore # if .gitignore doesn't exist yet 
cat .gitignore1 >> .gitignore # Add to it if it already exists 
paste .gitignore1 .gitignore # Add to it if it already exists 

Hot (ish) basımdan çıktı (yaz 2014):

Gitignorer, .gitignore dosyalarının oluşturulmasında yardımcı olan basit bir yardımcı programdır. Github.com/github/gitignore adresinden hariç tutulacak genel dosyaları içeren belirli (belirtilen) .gitignore şablonlarını çeker ve bunları birleştirir ve bunları geçerli dizinde bir .gitignore'a kaydeder.

Örnek kullanım:

gitignorer create c java python 

Gitignorer evet, el kopyalamak zorunda kalacak ... Yani esasen https://github.com/zachlatta/gitignorer


+10

de https://aur.archlinux.org/packages/gitignorer/ de ve GitHub üzerinde aşırı AUR şu anda kullanılabilir/yapıştırma bir dosyaya. (Bu cevabı yanlış anlamadığım sürece). –

+2

Anlaştık ama bazı terimleri belirtmem gerekiyor. Bir GLOBAL (çapraz depo) .gitignore ve bir proje-root .gitignore (ONE repo'daki tüm dosyalar için geçerlidir) arasındaki farktan bahsediyoruz. Bir proje-kök yaklaşımı benim için de en iyi şekilde çalıştı, girişleri bir projeden diğerine gerektiğinde kopyaladı. Küresel bir .gitignore, karışıklığa neden olmak için çok fazla potansiyele sahip gibi görünüyor. – moodboom

+0

, açıklığa yardımcı olmak için biraz daha fazla bilgi ekledi. –

İlgili konular