git २. g (Q4 २०१५) सीधे उपयोग करके शाखा छँटाई पेश करेगा git branch
: कमिट
देखें a3bc55 , कमिट aedcb7d , कमिट १५११ b२२ , कमिट F65f139 , ... (23 सितं, 2015), aedcb7d प्रतिबद्ध , प्रतिबद्ध 1511b22 , ca41799 प्रतिबद्ध , (24 सितं, 2015) और प्रतिबद्ध f65f139 , ... (23 सितंबर 2015) कार्तिक नायक ( KarthikNayak
) द्वारा ।
(द्वारा विलय Junio सी Hamano - gitster
- में प्रतिबद्ध 7f11b48 , 15 अक्टू 2015)
विशेष रूप से, प्रतिबद्ध aedcb7d :
branch.c
: ' ref-filter
' एपीआई का उपयोग करें
Refs छँटाई के माध्यम से पुनरावृत्ति के लिए ' branch.c
' उपयोग ' ref-filter
' एपीआई बनाओ । यह ' branch.c
' में प्रयुक्त अधिकांश कोड को ' ref-filter
' पुस्तकालय में कॉल के साथ प्रतिस्थापित करता है ।
यह विकल्प जोड़ता है--sort=<key>
:
दिए गए कुंजी के आधार पर क्रमबद्ध करें। मूल्य के अवरोही क्रम में सॉर्ट करने के लिए
उपसर्ग -
।
आप --sort=<key>
कई बार विकल्प का उपयोग कर सकते हैं , जिस स्थिति में अंतिम कुंजी प्राथमिक कुंजी बन जाती है।
समर्थित कुंजी उन लोगोंgit for-each-ref
के समान है ।
पूर्ण refname ( refs/...
उपसर्ग सहित ) के आधार पर सॉर्ट करने के लिए क्रम डिफॉल्ट को सॉर्ट करें । इस सूचियों ने पहले (फिर वर्तमान) एचएएडी को अलग किया, फिर स्थानीय शाखाओं और अंत में रिमोट-ट्रैकिंग शाखाओं को।
यहाँ:
git branch --sort=-committerdate
या (Git 2.19 के साथ नीचे देखें)
# if you are sure to /always/ want to see branches ordered by commits:
git config --global branch.sort -committerdate
git branch
कार्तिक नायक ( ) द्वारा 9e46833 (30 अक्टूबर 2015) भी देखें ।
हेल्प-बाय: जूनियो सी हमानो ( ) ।KarthikNayak
gitster
( जूनियो सी gitster
हमानो द्वारा विलय - - में ४१५० ९ ५ एफ , ०३ नवंबर २०१५)
जब संख्यात्मक मानों (जैसे --sort=objectsize
) के अनुसार छंटनी की जाती है, तो दोनों मूल्य एक ही मूल्य रखने पर कोई कमबैक तुलना नहीं होती है। यह अनपेक्षित परिणाम पैदा कर सकता है (यानी समान मूल्यों के साथ लिस्टिंग के क्रम पूर्व निर्धारित नहीं किए जा सकते हैं) जैसा कि जोहान्स सिक्सट ( $ gmane / 280117 ) द्वारा बताया गया है ।
इसलिये, जब भी अन्य मानदंड बराबर होते हैं, रिफाइनरी के आधार पर वर्णमाला की तुलना में गिरावट ।
$ git branch --sort=objectsize
* (HEAD detached from fromtag)
branch-two
branch-one
master
Git 2.19 के साथ, क्रम क्रम डिफ़ॉल्ट रूप से सेट किया जा सकता है।
git branch
एक विन्यास का समर्थन करता है branch.sort
, जैसे git tag
, जिसमें पहले से ही एक विन्यास था tag.sort
। शमूएल मफ़तउल (``) द्वारा 560ae1c (16 अगस्त 2018)
के लिए प्रतिबद्ध देखें । ( जूनियो सी हमानो द्वारा विलय -
gitster
में d89db6f प्रतिबद्ध , 27 अगस्त 2018)
branch.sort:
यह चर प्रदर्शित होने पर शाखाओं के क्रम क्रम को नियंत्रित करता है git-branch
। प्रदान किए
गए " --sort=<value>
" विकल्प के बिना , इस चर का मान डिफ़ॉल्ट के रूप में उपयोग किया जाएगा।
दूरस्थ शाखाओं को सूचीबद्ध करने के लिए, उपयोग करें git branch -r --sort=objectsize
। -r
झंडा यह स्थानीय शाखाओं के बजाय दूरस्थ शाखाओं सूची का कारण बनता है।
Git 2.27 (Q2 2020) के साथ, " git branch
" और अन्य " for-each-ref
" वेरिएंट ने --sort=<key>
पूर्ववर्तीता के बढ़ते क्रम में कई विकल्पों को स्वीकार किया , लेकिन इसके पास कुछ टूटने थे, " --ignore-case
" हैंडलिंग, और refname के साथ टाई-ब्रेकिंग, जो तय हो गए हैं।
जेफ किंग ( ) द्वारा 7c5045f , 76f9e56 (03 मई 2020) के लिए प्रतिबद्ध देखें । (द्वारा विलय Junio सी Hamano - - में प्रतिबद्ध 6de1630 , 08 मई 2020)peff
gitster
ref-filter
: सभी उपयोगकर्ता प्रकारों के बाद ही फ़ॉलबैक रीफ़ाइन सॉर्ट लागू करें
साइन-ऑफ-बाय: जेफ किंग
9e468334b4 के लिए प्रतिबद्ध (" ref-filter
वर्णमाला की तुलना में गिरावट", 2015-10-30, Git v2.7.0-rc0 - बैच # 10 में सूचीबद्ध मर्ज ) ने refnames की तुलना करने के लिए Refback के फ़िल्टर-अप को सिखाया।
लेकिन यह गलत स्तर पर किया गया था , उपयोगकर्ता से एक एकल " " कुंजी के लिए तुलना परिणाम को ओवरराइड करने के बजाय सभी प्रकार की चाबियाँ समाप्त होने के बाद।
--sort
यह एकल " --sort
" विकल्प के लिए सही तरीके से काम करता है , लेकिन कई लोगों के लिए नहीं।
हम पहली कुंजी में किसी भी संबंध को तोड़ देंगे और कभी भी दूसरी कुंजी का मूल्यांकन नहीं करेंगे।
मामलों को और भी दिलचस्प बनाने के लिए, हमने केवल कभी-कभी इस कमबैक को लागू किया है!
एक फ़ील्ड जैसे " taggeremail
" जिसके लिए एक स्ट्रिंग तुलना की आवश्यकता होती है, हम वास्तव में परिणाम को वापस कर देंगे strcmp()
, भले ही यह 0. था
लेकिन संख्यात्मक " value
" जैसे फ़ील्ड के लिए "taggerdate
" के लिए, हमने फॉलबैक लागू किया। और इसीलिए हमारे कई तरह के परीक्षण में चूक हुई: यह taggeremail
मुख्य तुलना के रूप में उपयोग होता है ।
तो चलिए शुरू करते हैं और अधिक कठोर परीक्षा को जोड़कर। हमारे पास दो टैगर ईमेल, दिनांक, और Refnames के हर संयोजन को व्यक्त करने वाले कमिट का एक सेट होगा। तब हम पुष्टि कर सकते हैं कि हमारा क्रम सही पूर्वता के साथ लागू किया गया है, और हम स्ट्रिंग और मूल्य तुलनित्र दोनों को मारेंगे।
यह बग को दिखाता है, और फिक्स सरल है: बाहरी में गिरावट की ओर बढ़ रहा है compare_refs()
सभी फ़ंक्शन ref_sorting
समाप्त हो जाने के बाद, फ़ंक्शन में ले जा रहा है।
ध्यान दें कि बाहरी फ़ंक्शन में हमारे पास "ignore_case"
ध्वज नहीं है , क्योंकि यह प्रत्येक व्यक्तिगत ref_sorting
तत्व का हिस्सा है । यह बहस करने योग्य है कि इस तरह की गिरावट क्या होनी चाहिए, क्योंकि हमने उपयोगकर्ता की कुंजी का उपयोग मैच के लिए नहीं किया था।
लेकिन अब तक हम उस झंडे का सम्मान करने की कोशिश कर रहे हैं, इसलिए सबसे कम-आक्रामक बात यह है कि ऐसा करने की कोशिश करते रहें।
चूंकि वर्तमान कोड के सभी कॉलर्स या तो सभी कुंजियों के लिए ध्वज सेट करते हैं या किसी के लिए नहीं, हम केवल पहली कुंजी से ध्वज को खींच सकते हैं। काल्पनिक दुनिया में जहां उपयोगकर्ता वास्तव में कुंजियों की असंवेदनशीलता को अलग से फ्लिप कर सकता है, हम उस मामले को एक कंबल से अलग करने के लिए कोड का विस्तार करना चाह सकते हैं --ignore-case
।