Git 2.5 (2. Çeyrek 2015) ' --
' bağımsız değişkeniniz joker karakter içeriyorsa ( *
)
" git <cmd> <revs> <pathspec>
" Komut satırı kuralının yanlış yazılan yolları yakalamasına yardımcı olacak bir buluşsal yöntem, komut satırının sonraki bölümündeki tüm rev olmayan parametrelerin çalışma ağacındaki dosyaların adları olduğundan emin olmaktır, ancak bu " git grep $str -- \*.c
" her zaman " --
" ile netleştirildi , çünkü kimse aklı başında tam anlamıyla yıldız işareti olan bir dosya oluşturmayacak.
Git 2.5 , bir joker karakter dizesiyle kullanıcının bize bir yol belirtmesi gerektiğini bildirmek için buluşsal yöntemi kaybeder .
git checkout 'a*'
# same as
git checkout -- 'a*'
Bkz . Duy Nguyen ( ) tarafından 28fcc0b (02 Mayıs 2015 ) . (Göre Birleştirilmiş - Junio Cı Hamano - içinde 949d167 tamamlama 2015 19 Mayıs)nguyenlocduy
gitster
pathspec
: --
joker karakter kullanıldığında " " gereksiniminden kaçının
--
Komut satırında " " bulunmadığında ve bir komut hem devir hem de yol alabiliyorsa, fikir bir argümanın hem genişletilmiş SHA-1 hem de yol olarak görülebiliyor olması durumunda " --
" gereklidir veya git devam etmeyi reddeder.
Şu anda uygulanmaktadır:
- (1) bir argüman rev ise, çalışma ağacında mevcut olmamalıdır
- (2) başka, çalışma ağacında var olmalıdır
- (3) "
--
" gereklidir.
Bu kurallar değişmez yollar için çalışır, ancak değişmez yol türü dahil edildiğinde, neredeyse her zaman kullanıcının " --
" eklemesini gerektirir, çünkü başarısız olur (2) ve (1) gerçekten nadiren karşılanır ( *.c
örneğin " " alır , (1) " *.c
" adında bir ref varsa karşılaşılır ).
Bu düzeltme eki, *
"çalışma ağacında mevcut" herhangi bir geçerli ( ) joker karakter yolu dikkate alınarak kuralları biraz değiştirir .
Kurallar:
- (1) bağımsız değişken bir devirse, çalışma ağacında var olmalı veya geçerli bir joker karakter yolu türü olmamalıdır.
- (2) aksi takdirde, ya çalışma ağacında bulunur ya da bir joker karakter yoludur
- (3) "
--
" gereklidir.
Yeni kurallarda, " --
" joker karakter pathspec'inin dahil olduğu çoğu zaman gerekli değildir.
Git 2.26 (Q1 2020) ile, revizyonları ve pathspec'i ayırmak için netleştirme mantığı, ters eğik çizgiden kaçan glob özel karakterlerinin "joker karakterler pathspec" kuralında sayılmaması için ayarlanmıştır.
Bkz . Jeff King ( ) tarafından yapılan 39e21c6 (25 Ocak 2020) taahhüdü . (Göre Birleştirilmiş - Junio Cı Hamano - içinde 341f8a6 tamamlama 2020 12 Şubat)peff
gitster
verify_filename()
: "joker karakterler pathspecs" kuralında ters eğik çizgileri işleme
Rapor eden: David Burström
İmzalayan: Jeff King
Taahhüt 28fcc0b71a ( pathspec
: --
joker karakter kullanıldığında " " gereksiniminden kaçının , 2015-05-02) izin verdi:
git rev-parse '*.c'
çift çizgi olmadan.
Ancak joker karakterleri kontrol etmek için kullandığı kural aslında herhangi bir özel küreyi arar.
Bu aşırı liberal a\b
bir durumdur , çünkü " " gibi herhangi bir joker karakter eşleşmesi yapmayan bir desenin bir yol türü olarak kabul edileceği anlamına gelir.
Diskte böyle bir dosya varsa, muhtemelen istediğiniz şey budur.
Ancak bunu yapmazsanız, sonuçlar kafa karıştırıcıdır: " there's no such path a\b
" demek yerine , sessizce hiçbir şeyle eşleşmeyen (veya en azından istediğiniz gibi olmayan) bir pathspec olarak sessizce kabul edeceğiz.
Aynı şekilde, " a\*b
" yolunu aramak da aramayı genişletmez; yalnızca tek bir giriş bulur " a*b
".
Bu komut, kuralı yalnızca glob metakarakterleri aramayı genişlettiğinde tetiklemeye geçirir, yani bu iki durum da artık bir hata rapor edecektir --
(elbette " " kullanarak yine de belirsizliğe varabilirsiniz; DWIM buluşsal yöntemini sıkıyoruz).
( DWIM: Ne demek istediğimi yap )
Orijinal özelliği 28fcc0b71a'da hiç test etmediğimizi unutmayın .
Yani bu yama sadece bu köşe vakalarını test etmekle kalmaz, aynı zamanda mevcut davranış için bir regresyon testi de ekler.