Başlığın dediği gibi, gitignore dosyasına "içlerinde nokta olmayan dosyalar" eklemek mümkün müdür?
Bunun tüm bu rahatsız edici uzantısız dosyaları halledeceğini hayal ediyorum.
Başlığın dediği gibi, gitignore dosyasına "içlerinde nokta olmayan dosyalar" eklemek mümkün müdür?
Bunun tüm bu rahatsız edici uzantısız dosyaları halledeceğini hayal ediyorum.
Yanıtlar:
Şuna benzer bir kombinasyon deneyebilirsiniz:
*
!/**/
!*.*
Bu gitignore
hariç tutma kuralı ( olumsuzlanmış bir kalıp ), bir uzantıya sahip olanlar dışındaki tüm dosyaları yoksaymalıdır.
Aşağıda Mad Physicist tarafından belirtildiği gibi kural şudur:
Bir dosyanın üst dizini dışarıda bırakılırsa, bir dosyayı yeniden dahil etmek mümkün değildir. (*
)
(*
: git 2.?+ sürümünde belirli koşullar sağlanmadıkça, aşağıya bakın)
!/**/
Dosyaları beyaz listeye almak istiyorsak bu nedenle önemlidir (üst klasörleri yinelemeli olarak beyaz listeye almak).
Benzer durumlarda aynı kuraldan bahsetmiştim:
As Jakub Narębski yorumların , görmezden istemeyebilirsiniz tüm extensionless dosyaları.
Benim tavsiyem:
.gitignore
yukarıda gösterildiği gibi düzenleyin : Halihazırda sürümü olan dosyalar yok sayılmaz (bir uzantıya sahip olmasalar bile). Diğerleri görmezden gelinecek.Sürümlendirmek isteyeceğiniz gelecekteki uzantısız dosyalar için:
git add -f -- myFile
Git 2.9.x / 2.10 (2016 ortası?) İle , yola yeniden eklenen joker karakter yoksa, o dosyanın üst dizini hariç tutulursa bir dosyayı yeniden dahil etmenin mümkün olabileceğini unutmayın .
Nguyen Thái Ngọc Duy ( pclouds
) bu özelliği eklemeye çalışıyor:
Ancak, yeniden dahil etme kurallarından biri şuydu:
Yeniden dahil etme kurallarındaki dizin bölümü değişmez olmalıdır (yani joker karakter olmamalıdır)
Bu zaten burada işe yaramazdı.
.gitignore
olurdu **
ve !**.*
. Ben yıldız önünde yerleştirilirse bu bir fark yapmaz biliyorum ama kabukları joker üstesinden gelmesinde daha açık ve ses ...
!Makefile
. 1.9.0'da sorunsuz çalışırken Git 1.7.1'de bu çözümle ilgili sorunlar yaşadığıma dikkat edin. Benim durumumda, kök dizine bir dosya eklemek iyi çalıştı, ancak bir alt dizinin içine bir uzantı içeren bir dosya eklemek yoksayıldı olarak gösterildi. Bunun nedeni 1.7.1'in **
henüz kalıbı desteklememesi, buraya bakın !
**
Git'e eklendi 1.8.2
. !*/
Bunun yerine kullanmanın herhangi bir dezavantajı var mı !/**/
?
*
!*/
!*.*
*
git'e her şeyi görmezden gelmesini söyler.
!*/
daha sonra dizin olan her şeyi yok sayar. Bu çok önemlidir.
!*.*
bir uzantıya sahip tüm dosyaları yoksayar.
Olmadan !*/
kural, bir olmadan dizinleri .
listelerde ismi olmaz ve istediğiniz dosyaların hiçbiri kök klasörüne dışında eklenebilir.
Başvuru için .gitignore belgelerinde öne çıkan şu iki bölümü okuyun :
İ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. Git, performans nedenlerinden ötürü hariç tutulan dizinleri listelemez, bu nedenle içerilen dosyalardaki herhangi bir örüntü, nerede tanımlanırsa tanımlansın, hiçbir etkiye sahip değildir. İlk "!" Karakterinin önüne bir ters eğik çizgi ("\") koyun. gerçek bir "!" ile başlayan desenler için, örneğin, "! önemli! .txt".
Desen eğik çizgiyle biterse, aşağıdaki açıklama amacıyla kaldırılır, ancak yalnızca bir dizinle bir eşleşme bulur. Başka bir deyişle, foo / bir foo diziniyle ve altındaki yollarla eşleşir, ancak normal bir dosya veya sembolik bir bağlantı foo ile eşleşmez (bu, genel olarak yol belirtiminin Git'te çalışma biçimiyle tutarlıdır).
Klasörlerimde *.c, *.h, *.txt, *.csv
vb. Uzantılı çok sayıda dosya ve herhangi bir uzantısı olmayan ikili dosya var. Bu yüzden çalıştırılan tüm dosyaları yok saymam gerekiyordu *.c,*.h
ve .gitignore
bu benim için çalışıyor, .gitignore
örnekten:
*/* #ignore all files in each directory
!*/*.c #unignore .c files in each directory
!*/*.h #unignore .h header files in each directory
!.gitignore #unignore .gitignore
README
,LICENSE
veyaCOPYING
,INSTALL
,Makefile
vb, her zaman gerçi bunları zorla ekleyin ve sonra da izlenir