git, belirli bir alt klasördeki dosyalar hariç, belirli bir türdeki tüm dosyaları yoksay


194

Ben böyle bir dizin yapısı var:

  • kök
    • klasor1
      • abc.json
      • def.json
      • somedir
        • more.json
    • klasor2
      • qwe.json
      • rty.json
    • spec
      • mock1.json
      • mock2.json
      • somedir
        • more_mocks.json

Şimdi kullanarak bir olanlar hariç .gitignoretüm *.jsondosyaları yoksaymak istiyorum spec. Bir .gitignorein kullanmak istemiyorum folder1ve folder2bunlardan bir ton var ve çok fazla eklenecek ve eminim doğru .gitignoredosyayı yerinde taşımayı unutacağım .

Ayrıca, json dosyalarıyla daha fazla iç içe dizin olabilir ve bu kuralın tüm alt dizinlere de uygulanması gerekir.

Belirli bir alt dizin dışında bir türdeki tüm dosyaları nasıl yok sayabilirim?

Yanıtlar:


304

!Deseni reddeden isteğe bağlı bir önek ; önceki bir kalıp tarafından hariç tutulan eşleşen dosyalar tekrar dahil edilir. Negatif bir kalıp eşleşirse, bu daha düşük öncelikli kalıp kaynaklarını geçersiz kılar.

http://schacon.github.com/git/gitignore.html

*.json
!spec/*.json

4
İsterseniz! / *. Json içeren spec'e bir .gitignore ekleyebilirsiniz.
David Mitchell

2
Teşekkürler! Benim durumumda olmasına rağmen, spec dizinimde hiçbir şeyi yoksaymak istediğimi fark ettim. Bu yüzden çok basit bir şekilde kurtulabiliyorum !spec. Tıkır tıkır çalışıyor.
Alex Wayne

7
Amber yanıtı spec üst düzey altında bir dizin olduğunda çalışıyorsa (yani / spec) spec bir alt dizin, örneğin, / a / spec veya a / b / spec gibi benim için çalışmaz. Git 1.7.5.4'ü kullanma
Peter Lewis

7
@PeterLewis (gelecekteki ziyaretçiler için): Böyle bir durum, ilgili alt dizinde bir .gitignore dosyası oluşturularak ele alınabilir.
cmbuckley

3
Bu çözüm benim için soruları sadece alt dizindeki jsondosyaları specdeğil, sadece doğrudan göz ardı etti somedir. Ben de kararlı !spec/**/*.jsonolduğundan emin olmak için kullanmak gerekiyordu more_mocks.json.
Leith
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.