Şöyle bir dizin yapım var:
.git/
.gitignore
main/
...
tools/
...
...
main ve tools dizinlerinin içinde ve herhangi bir seviyedeki diğer dizinlerde, yok saymak istediğim bir 'bin' dizini olabilir (ve altındaki her şeyi de yok saymak istiyorum). Bu kalıpların her birini .gitignore'da denedim ancak hiçbiri çalışmıyor:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
Biri bana yardım edebilir mi? İlk desen (çalışıyor olması gerektiğini düşündüğüm) bunu yaparsam gayet iyi çalışıyor:
/main/**/bin/**/*
Ancak her üst düzey dizin için bir girdiye sahip olmak istemiyorum ve her yeni bir dizin eklediğimde .gitignore'u değiştirmek zorunda kalmak istemiyorum.
Bu, en son msysgit'i kullanan Windows üzerinde.
DÜZENLEME: bir şey daha var, adlarında 'bin' alt dizesi olan dosyalar ve dizinler var, bunların göz ardı edilmesini istemiyorum :)
1.8.2 sürümünden önce, **
.gitignore
içinde herhangi bir özel anlama sahip değildi. 1.8.2 sürümünden itibaren git, sıfır veya daha fazla alt dizin anlamına gelen **
ifadesini desteklemektedir (bkz. sürüm notları).
Bir dizin ağacında geçerli seviyenin altındaki herhangi bir yerde bin olarak adlandırılan tüm dizinleri yok saymanın yolu, kalıbı olan bir .gitignore
dosyası kullanmaktır:
bin/
mansayfasında, benzer bir kalıp kullanarak
foo` adlı bir dizini yok saymanın bir örneği vardır.
Düzenle:
Git dizininizde artık izlemek istemediğiniz herhangi bir bin klasörü varsa, bunları açıkça kaldırmanız gerekir. Git, artık yeni bir .gitignore
kalıbıyla eşleştikleri için zaten izlenmekte olan yolları izlemeyi bırakmayacaktır. Yalnızca dizinden (-önbelleğe alınmış) yinelemeli olarak (-r) bir klasör kaldırma (rm) çalıştırın. Kök bin klasörü için komut satırı örneği:
git rm -r --cached bin
Hayalinizdeki .gitignore
şöyle görünüyor:
bin/
en üst seviyede.