Sorun
Herkes ne olduğunu açıklayabilir mi? [...] O dalı silebilmek isterdim, ama Git benim için çalışmaz.
Koşarak
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
zsh'de hiç şube oluşturmadınız . Bunun yerine, yanlışlıkla üç tanımlı kabuk fonksiyonları denilen git
, branch
ve SSLOC-201_Implement___str__
organıdır parametrelerini (varsa) ve görmezden _of_ProductSearchQuery
. functions
Varolan tüm kabuk işlevlerini listeleyen yerleşik zsh komutunu çağırarak bunun gerçekten olup olmadığını kendiniz kontrol edebilirsiniz :
$ functions
SSLOC-201_Implement___str__ () {
_of_ProductSearchQuery
}
branch () {
_of_ProductSearchQuery
}
git () {
_of_ProductSearchQuery
}
Ne yazık ki, diğer iki kabuk işlevi sorunlu olmasa da, "git" adı verilen kabuk işlevi artık iyi niyetli git
komutu gölgeliyor !
$ which git
git () {
_of_ProductSearchQuery
}
# but the real "git" is a binary file that lives in /usr/local/bin/git (or some similar path)
Bu nedenle, daha sonra hatayı alacaksınız
command not found: _of_ProductSearchQuery
Bir Git komutunu çalıştırmak girişiminde zaman örneğin git log
, git status
vb (varsayarak, tabii ki, denilen hiçbir komut olduğunu _of_ProductSearchQuery
var).
Kenar notu
[...] Aynı hatayı alıyorum:
git:176: command not found: _of_ProductSearchQuery
( git
her komut yazışımda artan sayı ile )
Bu sayı basitçe HISTCMD
bir ortam değişkeni değerine karşılık gelir.
interaktif bir kabukta geçmiş olay numarasını, yani $HISTCMD
okunmasına neden olan komutun olay numarasını günceller .
Daha fazla ayrıntı için zsh kılavuzuna bakın.
Çözüm
Ve normale nasıl dönebilirim?
Sorunlu kabuk işlevini (ve siz kazara oluşturduğunuz diğer ikisini, siz çalışırken) silin:
unset -f git
unset -f branch SSLOC-201_Implement___str__
O zaman her şey iyi olmalı.
Ya unset
gölgeli ise ?!
Güzel soru ! Sizi aşağıda Wumpus W. Wumbley'nin mükemmel yorumuna yönlendiriyorum .
Şube adlandırma ipuçları
Özel kabuk karakterlerinden kaçının
Evet, yorumlarda belirtildiği gibi, parantezler Git dalı adlarında geçerli karakterlerdir; sadece adı uygun şekilde alıntılamanız gerekir, ör.
$ git branch 'foo()bar'
$ git branch
foo()bar
* master
$ git checkout 'foo()bar'
Switched to branch 'foo()bar'
Ancak, komut satırı bağımsız değişkenleri olarak kullanıldığında bu adların her seferinde alıntılanması gerekliliği, sizi referans adlarında parantezlerden kaçınmaya ikna etmelidir. Daha genel olarak, bu tür sürprizleri önlemek için (mümkün olduğunca) kabuklarda özel bir anlamı olan karakterlerden kaçınmalısınız.
Basit dal adlarını kullanma
Yine de şube adlarınızı kısa ve tatlı tutmalısınız. Gibi uzun açıklamalar
SSLOC-201_Implement ___ str __ () = of_ProductSearchQuery
şube isimlerine değil, taahhüt mesajlarına aittir.