ध्यान दें कि आपको जरूरत नहीं होगी, क्योंकि Git 2.5 (Q2 2015) a ' --
' यदि आपके तर्क में वाइल्डकार्ड ( *
) शामिल है
git <cmd> <revs> <pathspec>
गलत लाइन वाले रास्तों को पकड़ने के लिए " " कमांड लाइन कन्वेंशन में मदद करने के लिए एक अनुमान है कि कमांड लाइन के बाद के हिस्से में सभी गैर-रेव मापदंडों को काम करने वाले पेड़ में फाइलों के नाम हैं, लेकिन इसका मतलब है कि git grep $str -- \*.c
हमेशा " " होना चाहिए " --
" से असंतुष्ट , क्योंकि कोई भी व्यक्ति कोई फ़ाइल नहीं बनाएगा, जिसका नाम शाब्दिक रूप से तारांकित-डॉट-देखें है।
Git 2.5 यह बताने के लिए कि किसी वाइल्डकार्ड स्ट्रिंग के साथ उपयोगकर्ता को एक pathspec देने की संभावना है, यह घोषित करने के लिए विधायी को खो देता है ।
git checkout 'a*'
# same as
git checkout -- 'a*'
Duy Nguyen ( ) द्वारा प्रतिबद्ध 28fcc0b (02 मई 2015) देखें । (द्वारा विलय Junio सी Hamano - - में प्रतिबद्ध 949d167 , 19 मई 2015)nguyenlocduy
gitster
pathspec
: --
वाइल्डकार्ड का उपयोग करने पर " " की आवश्यकता से बचें
जब --
कमांड लाइन से " " की कमी होती है और एक कमांड रेव्स और पाथ दोनों को ले सकता है, तो विचार यह है कि यदि एक तर्क को एक विस्तारित SHA-1 और एक पथ दोनों के रूप में देखा जा सकता है, तो " --
" आवश्यक है या जारी रखने के लिए मना कर देता है।
यह वर्तमान में इस प्रकार लागू है:
- (१) यदि कोई तर्क उलटा है, तो उसका वर्कट्री में मौजूद नहीं होना चाहिए
- (२) और, यह कार्यक्षेत्र में मौजूद होना चाहिए
- (3) और, "
--
" आवश्यक है।
ये नियम शाब्दिक रास्तों के लिए काम करते हैं, लेकिन जब गैर-शाब्दिक रास्ते में शामिल होते हैं, तो उपयोगकर्ता को लगभग हमेशा " --
" जोड़ने की आवश्यकता होती है क्योंकि यह विफल होता है (2) और (1) वास्तव में शायद ही कभी मिलता है ( *.c
उदाहरण के लिए " ले" , (1) अगर वहाँ एक रेफरी है जिसका नाम " *.c
") है।
यह पैच किसी भी वैध ( *
) वाइल्डकार्ड pathspec "वर्कट्री में मौजूद है" पर विचार करके नियमों को थोड़ा संशोधित करता है ।
नियम बन जाते हैं:
- (1) यदि कोई arg एक Rev है, तो यह या तो वर्कट्री में मौजूद होना चाहिए या एक मान्य वाइल्डकार्ड pathspec नहीं होना चाहिए।
- (२) और, यह या तो वर्कट्री में मौजूद है या वाइल्डकार्ड पाथसेप है
- (3) और, "
--
" आवश्यक है।
नए नियमों के साथ, --
वाइल्डकार्ड पाथसेप में शामिल होने पर " " अधिकांश समय की आवश्यकता नहीं होती है।
Git 2.26 (Q1 2020) के साथ, संशोधन और pathspec को अलग-अलग बताने के लिए तर्क को अलग कर दिया गया है ताकि बैकस्लैश-बच गए ग्लोब विशेष वर्णों की गिनती "वाइल्डकार्ड्स pathspec" में न हो।
जेफ किंग ( ) द्वारा देखें कमिट 39e21c6 (25 जनवरी 2020 ) । (द्वारा विलय Junio सी Hamano - - में प्रतिबद्ध 341f8a6 , 12 फ़र 2020)peff
gitster
verify_filename()
: "वाइल्डकार्ड्स पाथस्पेक्स" नियम में बैकस्लैश संभालते हैं
रिपोर्टेड-बाय: डेविड बर्स्ट्रम
साइन-ऑफ-बाय: जेफ किंग
प्रतिबद्ध 28fcc0b71a ( pathspec
: --
वाइल्डकार्ड का उपयोग करने पर " " की आवश्यकता से बचें , 2015-05-02) की अनुमति दी:
git rev-parse '*.c'
डबल-डैश के बिना।
लेकिन वाइल्डकार्ड्स की जांच के लिए यह जिस नियम का उपयोग करता है वह वास्तव में किसी भी विशेष के लिए दिखता है।
यह पूरी तरह से उदार है, क्योंकि इसका मतलब है कि एक पैटर्न जो वास्तव में किसी भी वाइल्डकार्ड मिलान नहीं करता है, जैसे " a\b
", एक पथ प्रदर्शक माना जाएगा।
यदि आपके पास डिस्क पर ऐसी कोई फ़ाइल है, तो संभवतः यह वही है जो आप चाहते थे।
लेकिन अगर आप नहीं करते हैं, तो परिणाम भ्रामक हैं: " there's no such path a\b
" कहने के बजाय , हम चुपचाप इसे एक ऐसे मार्ग के रूप में स्वीकार करेंगे जो बहुत संभावना है कि कुछ भी नहीं (या कम से कम आपके द्वारा इच्छित उद्देश्य) से मेल नहीं खाता।
इसी तरह, रास्ते की तलाश में " a\*b
" खोज का विस्तार नहीं करता है; इसे केवल एक प्रविष्टि मिलेगी, " a*b
"।
यह प्रतिबद्ध नियम को केवल तभी ट्रिगर करने के लिए स्विच करता है जब ग्लोब मेटाचैटरर्स खोज का विस्तार करेगा, जिसका अर्थ है कि उन दोनों मामलों में अब एक त्रुटि की रिपोर्ट होगी (आप अभी भी " --
" का उपयोग करके अवहेलना कर सकते हैं , निश्चित रूप से; हम सिर्फ DWIM विधर्मी को कस रहे हैं)।
( DWIM: मेरा क्या मतलब है )
ध्यान दें कि हमने 28fcc0b71a में मूल विशेषता का परीक्षण बिल्कुल नहीं किया ।
तो यह पैच न केवल इन कोने के मामलों के लिए परीक्षण करता है, बल्कि मौजूदा व्यवहार के लिए एक प्रतिगमन परीक्षण भी जोड़ता है।