Orada arasında farklılıklar olduğunu www, www/ve www/*.
Temel olarak dokümantasyondan ve kendi testlerimden, wwwbir 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 wwwve arasındaki farklar www/çok açık.
Çünkü www/git dizinin wwwkendisini 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 wwwve kalıpla hepsini yok sayar *. Git, wwwtü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.txtiçerideki diğerlerini dahil etmek ama yok saymak istiyorsak www?
Aşağıdakiler .gitignoreişe yaramayacak.
www/
!www/1.txt
Aşağıdakiler .gitignoreişe yararken neden?
www/*
!www/1.txt
Birincisi için git, dizini görmezden gelir ve tekrar wwweklemek için içeriye bakmaz bile www/1.txt. İlk kural üst dizini hariç tutar, wwwancak hariç tutar www/1.txtve sonuç www/1.txtolarak " tekrar dahil edilemez ".
Ancak ikincisi için git önce altındaki tüm dosyaları / dosyaları yok sayar wwwve 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.
binvebin/eski dosya veya klasörleri, ikincisi sadece klasörleri görmezden olacaktır.bin/*