Orada arasında farklılıklar olduğunu www
, www/
ve www/*
.
Temel olarak dokümantasyondan ve kendi testlerimden, www
bir dosya veya dizinle bir eşleşme bul, www/
yalnızca bir dizinle eşleşirken, www/*
dizinleri ve içindeki dosyalarla eşleşir www
.
Sadece aradaki www/
ve www/*
buradaki farkları tartışacağım , çünkü aralarındaki www
ve arasındaki farklar www/
çok açık.
Çünkü www/
git dizinin www
kendisini yok sayar , bu da git'in içine bakmayacağı anlamına gelir. Ancak for www/*
, git içindeki tüm dosyaları / klasörleri kontrol eder www
ve kalıpla hepsini yok sayar *
. Git, www
tüm alt dosyaları / klasörleri göz ardı edilirse boş bir klasörü takip etmeyeceği için aynı sonuçlara yol açıyor gibi görünüyor . Ve gerçekten de sonuçlar OP'nin tek başına www/
veya www/*
bağımsız durumu için hiçbir fark olmayacaktır . Ancak diğer kurallarla birleştirildiğinde fark yaratır.
Örneğin, ya sadece www/1.txt
içerideki diğerlerini dahil etmek ama yok saymak istiyorsak www
?
Aşağıdakiler .gitignore
işe yaramayacak.
www/
!www/1.txt
Aşağıdakiler .gitignore
işe yararken neden?
www/*
!www/1.txt
Birincisi için git, dizini görmezden gelir ve tekrar www
eklemek için içeriye bakmaz bile www/1.txt
. İlk kural üst dizini hariç tutar, www
ancak hariç tutar www/1.txt
ve sonuç www/1.txt
olarak " tekrar dahil edilemez ".
Ancak ikincisi için git önce altındaki tüm dosyaları / dosyaları yok sayar www
ve sonra bunlardan birini tekrar içerir, yani www/1.txt
.
Bu örnek için, dokümantasyondaki aşağıdaki satırlar yardımcı olabilir:
İsteğe bağlı bir ön ek "!" kalıbı olumsuzlayan; önceki bir kalıp tarafından hariç tutulan eşleşen herhangi bir dosya tekrar dahil edilecektir. Bir dosyanın üst dizini dışarıda bırakılırsa, bir dosyayı yeniden dahil etmek mümkün değildir.
bin
vebin/
eski dosya veya klasörleri, ikincisi sadece klasörleri görmezden olacaktır.bin/*