मुझे अपने सिस्टम में सभी टैग सूचीबद्ध करने की आवश्यकता है जिस तिथि तक वे बनाए गए थे, लेकिन मुझे यकीन नहीं है कि मैं गिट-लॉग के माध्यम से उस डेटा को प्राप्त कर सकता हूं। विचार?
मुझे अपने सिस्टम में सभी टैग सूचीबद्ध करने की आवश्यकता है जिस तिथि तक वे बनाए गए थे, लेकिन मुझे यकीन नहीं है कि मैं गिट-लॉग के माध्यम से उस डेटा को प्राप्त कर सकता हूं। विचार?
जवाबों:
टैग निर्माण तिथि के अनुसार क्रमबद्ध एनोटेट और हल्के टैग के साथ काम करता है:
git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags
git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tagsठीक वैसा ही किया जैसा मुझे चाहिए था। धन्यवाद!
%(contents)जरूरत पड़ने पर एनोटेशन में जोड़ने के लिए उपयोग कर सकते हैं , जैसेgit for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
git for-each-ref --sort=taggerdate --format '%(tag)'
--sort=creatordateएनोटेट और अननोनॉटेड टैग दोनों के लिए काम करता है, लेकिन --sort=taggerdateकेवल एनोटेट टैग के साथ काम करने लगता है। परीक्षण का उपयोग करgit version 2.16.3
Git 2.8 (मार्च 2016) दस्तावेज़ों का एक और विकल्प है जो वापस 1.4.4 (Oct2006) के लिए डेटिंग करता है । एरिक वोंग ( ) द्वारा प्रतिबद्ध e914ef0 (05 जनवरी 2016)
देखें । (द्वारा विलय Junio सी Hamano - - में प्रतिबद्ध 108cb77 , 20 जनवरी 2016)ele828
gitster
नया देखें Documentation/git-for-each-ref.txt
प्रतिबद्ध और टैग वस्तुओं के लिए, विशेष
creatordateऔरcreatorक्षेत्रों से उचित समय या नाम-ईमेल की तारीख टपल के अनुरूप होगाcommitterयाtaggerक्षेत्रों वस्तु प्रकार के आधार पर।
ये एनोटेट और हल्के टैग के मिश्रण पर काम करने के लिए अभिप्रेत हैं ।
इसलिए creatordateटैग के साथ काम करता है:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
या:
git tag --sort=-creatordate
जैसा कि मैंने " rc-XYZW के संस्करण स्ट्रिंग क्रम द्वारा git टैग कैसे सॉर्ट करें? " में विस्तार से बताया है, आप git tag(Git 2.0 जून 2014 के बाद से) के लिए एक सॉर्ट ऑर्डर जोड़ सकते हैं ।
उस क्रम में फ़ील्ड नाम (सूचीबद्ध git for-each-ref) टैगगार्डेट के रूप में शामिल है । इसके लिए अनुमति देता है git tag --sort=taggerdate( नीचे DarVar द्वारा उल्लिखित )
एक उदाहरण के रूप में, रेपो में यह अंतिम टैग को सूचीबद्ध करेगा :git/gitv2.10.0
v2.9.1
v2.9.2
v2.9.3
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.10.0
डिफ़ॉल्ट आदेश नहीं होगा ( git tag):
v2.1.2
v2.1.3
v2.1.4
v2.10.0
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.2.0
creatordate!
git log --tags --simplify-by-decoration --pretty="format:%ci %d"
इसके अलावा (तारीख क्षेत्र के बिना) से अच्छा उत्पादन:
git log --tags --decorate --simplify-by-decoration --oneline
निर्भरता और धारीदार रेखांकन के साथ पूरा इतिहास देखने के लिए (केवल आवश्यक घटनाओं, जैसे टैगिंग और ब्रांचिंग / विलय):
git log --graph --decorate --simplify-by-decoration --oneline --all
git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"और यह मेरे लिए सबसे अच्छा काम करता है।
git tag --sort=-taggerdate
मैन पेज के अनुसार, "उपसर्ग - मूल्य के अवरोही क्रम में छाँटने के लिए।"
git tagके रूप में एक ही छँटाई कुंजी का उपयोग करता है git-for-each-ref, जो है जहाँ चाबियाँ प्रलेखित हैं।
यह एक-लाइनर बिना किसी उपद्रव के दिनांक और टैग प्रदर्शित करता है।
git tag --format='%(creatordate:short)%09%(refname:strip=2)'
आउटपुट:
2015-04-01 storaged-2.0.0
2015-06-11 storaged-2.1.0
2015-08-06 storaged-2.1.1
...
यदि आपको यह पसंद नहीं है कि डिफ़ॉल्ट रूप से टैग कैसे सॉर्ट किए जाते हैं, तो आप विकल्प के साथ दिनांक के अनुसार सॉर्ट कर सकते हैं --sort=creatordate। देखें VonC जवाब अधिक जानकारी के लिए।
प्रतिबद्ध दिनांक के आधार पर, टैग और हल्के टैग पूरी तरह से छांटे गए हैं, जिनका मैं उपयोग कर रहा हूं:
git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
यह आदेश कालानुक्रमिक क्रम में प्रत्येक टैग और संबद्ध प्रतिबद्ध वस्तु आईडी को सूचीबद्ध करेगा।
निम्नलिखित प्रतिबद्ध पर निर्भर करता है, इसलिए यह कोई फर्क नहीं पड़ता कि क्या यह दिनांक जानकारी के साथ है:
git log --tags --decorate --simplify-by-decoration|grep ^commit|grep tag|sed -e 's/^.*: //' -e 's/)$//' -e 's/,.*$//'|tac
जोश ली द्वारा ऊपर दिए गए उत्तर, आदेश को सही करने के लिए एक टैग तिथि पर निर्भर करते हैं।
tacहै - इसे बदल सकते हैं more। वैसे भी आपकी आज्ञा ने बहुत काम किया - धन्यवाद!
पहले बताए गए तरीकों के आधार पर, मैं सूची में वास्तविक टैग तिथि भी देखना चाहता था, और इसलिए मेरा इन-यूज संस्करण है:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(creatordate:short) %(refname) %(*objectname) %(objectname)' refs/tags | sort -n | awk '{ print $3, $5, $4 }'