मुसीबत
क्या कोई समझा सकता है कि क्या हुआ? [...] मुझे उस शाखा को हटाने में सक्षम होना अच्छा लगेगा, लेकिन Git मेरे लिए काम नहीं करेगा।
चलाकर
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
zsh में, आपने कोई शाखा नहीं बनाई । इसके बजाय, आप गलती से तीन परिभाषित खोल कार्यों , कहा जाता है git
, branch
और SSLOC-201_Implement___str__
, जो उनके मानकों (यदि हो तो) और जिसका शरीर है पर ध्यान न दें _of_ProductSearchQuery
। आप अपने लिए जांच सकते हैं कि वास्तव में क्या हुआ है, बिल्ट ज़श कमांड को आमंत्रित करके functions
, जो सभी मौजूदा शेल कार्यों को सूचीबद्ध करता है:
$ functions
SSLOC-201_Implement___str__ () {
_of_ProductSearchQuery
}
branch () {
_of_ProductSearchQuery
}
git () {
_of_ProductSearchQuery
}
दुर्भाग्य से, हालांकि अन्य दो शेल फ़ंक्शंस समस्याग्रस्त नहीं हैं, शेल फ़ंक्शन जिसे "गिट" कहा जाता है, अब बोना फ़ाइड git
कमांड को छाया करता है !
$ which git
git () {
_of_ProductSearchQuery
}
# but the real "git" is a binary file that lives in /usr/local/bin/git (or some similar path)
इसलिए, आपको बाद में त्रुटि मिलेगी
command not found: _of_ProductSearchQuery
जब भी आप एक Git कमांड चलाने का प्रयास करते हैं, उदाहरण git log
के लिए git status
, आदि (निश्चित रूप से, कि कोई भी कमांड _of_ProductSearchQuery
मौजूद नहीं है)।
पक्षीय लेख
[...] मुझे समान त्रुटि मिली:
git:176: command not found: _of_ProductSearchQuery
( git
हर बार जब मैं एक कमांड टाइप करता हूं तो संख्या बढ़ने के साथ )
यह संख्या बस के मान से मेल खाती है HISTCMD
, एक पर्यावरण चर जो धारण करता है
[t] वह इतिहास की घटना संख्या को एक संवादात्मक खोल में रखता है, दूसरे शब्दों में उस आदेश के लिए घटना संख्या जो $HISTCMD
पढ़ने के कारण होती है।
देखें zsh पुस्तिका अधिक जानकारी के लिए।
समाधान
और मैं वापस सामान्य कैसे हो सकता हूं?
बस समस्याग्रस्त शेल फ़ंक्शन को हटाएं (और आपके द्वारा किए गए अन्य दो दुर्घटना के समय,):
unset -f git
unset -f branch SSLOC-201_Implement___str__
तब सब कुछ ठीक होना चाहिए।
क्या होगा अगर unset
छाया भी है ?!
अच्छा सवाल ! मैं आपको Wumpus W. Wumbley की उत्कृष्ट टिप्पणी के लिए नीचे उल्लेख करता हूं ।
शाखा-नामकरण युक्तियाँ
किसी भी विशेष शेल वर्ण से बचें
हाँ, जैसा कि टिप्पणियों में बताया गया है, कोष्ठक गिट शाखा के नामों में मान्य वर्ण हैं; आपको बस नाम को उचित रूप से उद्धृत करने की आवश्यकता है, जैसे
$ git branch 'foo()bar'
$ git branch
foo()bar
* master
$ git checkout 'foo()bar'
Switched to branch 'foo()bar'
हालाँकि, कमांड-लाइन तर्कों के रूप में उपयोग किए जाने पर हर बार ऐसे नामों को उद्धृत करने की आवश्यकता होती है, जो आपको संदर्भ नामों में कोष्ठक को आगे बढ़ाने के लिए मनाते हैं। आम तौर पर, आपको इस तरह के आश्चर्य को रोकने के लिए, गोले में एक विशेष अर्थ रखने वाले पात्रों से (जितना संभव हो) बचना चाहिए।
सरल शाखा नामों का उपयोग करें
आपको वैसे भी अपनी शाखा का नाम छोटा और मीठा रखना चाहिए। जैसे लंबे विवरण
SSLOC-201_Implement ___ str __ () _ of_ProductSearchQuery
शाखा संदेशों में नहीं, प्रतिबद्ध संदेशों में हैं।