जिस तिथि में वे बनाए गए थे, मैं अपने जीआईटी भंडार में सभी टैग कैसे सूचीबद्ध कर सकता हूं?


128

मुझे अपने सिस्टम में सभी टैग सूचीबद्ध करने की आवश्यकता है जिस तिथि तक वे बनाए गए थे, लेकिन मुझे यकीन नहीं है कि मैं गिट-लॉग के माध्यम से उस डेटा को प्राप्त कर सकता हूं। विचार?


2
क्या आपका मतलब है कि आप सभी टैग की सूची बनाना चाहते हैं ताकि वहाँ की तारीखों का निर्माण हो सके?
लिथुआक

3
FYI करें (1.) यह प्रश्न दिनांक तक ANNOTATED टैग सूचीबद्ध करने के लिए है। (२.) आज तक LIGHTWEIGHT टैग सूचीबद्ध करने के लिए, यहां जाएं(3.) Git के लाइटवेट बनाम एनोटेट टैग्स में क्या अंतर है, इस पर एक उपयोगी अनुस्मारक के लिए, यहां जाएं
ट्रेवर बॉयड स्मिथ

@TrevorBoydSmith: यह बिल्कुल सही नहीं है। अंतर यह है कि (2) सूचियों द्वारा सभी टैग है तिथि करने के टैग किए प्रतिबद्ध यह पेज समाधान है कि तरह से देता है, जबकि तारीख में चिह्नित (हालांकि केवल एनोटेट टैग के लिए, Git नहीं है के बाद से दुकान तारीख हल्के टैग के लिए टैग किया गया)।
डेविड पी

जवाबों:


174

टैग निर्माण तिथि के अनुसार क्रमबद्ध एनोटेट और हल्के टैग के साथ काम करता है:

git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags

12
बहुत बढ़िया। git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tagsठीक वैसा ही किया जैसा मुझे चाहिए था। धन्यवाद!
जॉन उर्सनबैक

21
@DrorCohen द्वारा एक हल जो हल्के टैग के लिए काम करता है: stackoverflow.com/questions/6900328/… । आसान संदर्भ के लिए यहां पेस्ट करना: git log --tags --simplify-by-decor --pretty = "format:% ai% d"
गिलियड

5
%(contents)जरूरत पड़ने पर एनोटेशन में जोड़ने के लिए उपयोग कर सकते हैं , जैसेgit for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
टिम डिगिन्स

7
या यहां तक ​​कि थोड़ा क्लीनर:git for-each-ref --sort=taggerdate --format '%(tag)'
बारिस वन्सचर्स 15

4
--sort=creatordateएनोटेट और अननोनॉटेड टैग दोनों के लिए काम करता है, लेकिन --sort=taggerdateकेवल एनोटेट टैग के साथ काम करने लगता है। परीक्षण का उपयोग करgit version 2.16.3
austinheiman

56

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!
14:27

35
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:"और यह मेरे लिए सबसे अच्छा काम करता है।
मट्टुज़

1
ध्यान दें कि यह कमिट तिथि द्वारा आदेशित किया गया है, न कि वे टैग बनाए जाने की तिथि। जोश ली का (वर्तमान में) शीर्ष रेटेड जवाब उस तारीख तक आदेश देता है जब टैग बनाया गया था।
नेथनियल वोल्स

13
git tag --sort=-taggerdate

मैन पेज के अनुसार, "उपसर्ग - मूल्य के अवरोही क्रम में छाँटने के लिए।"

git tagके रूप में एक ही छँटाई कुंजी का उपयोग करता है git-for-each-ref, जो है जहाँ चाबियाँ प्रलेखित हैं।


1
यह शायद सवाल के आधार पर सबसे सही है। यहाँ संभव सॉर्ट फ़ील्ड्स को रेखांकित करने वाले डॉक्स की लिंक दी गई है: git-scm.com/docs/git-for-each-ref
prasanthv

यह प्रतिक्रिया हल्के टैग को ध्यान में नहीं रखती है क्योंकि उनके पास "टैगरगेट" खाली है। "रचनाकार" के साथ अन्य प्रतिक्रियाएं अधिक सटीक हैं।
मोर

13

यह एक-लाइनर बिना किसी उपद्रव के दिनांक और टैग प्रदर्शित करता है।

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 जवाब अधिक जानकारी के लिए।


क्या यह अच्छी विधि उन्हें तिथि के अनुसार क्रमबद्ध करने के लिए बाध्य है? आरोही? उतरते?
मति शनीर

11

प्रतिबद्ध दिनांक के आधार पर, टैग और हल्के टैग पूरी तरह से छांटे गए हैं, जिनका मैं उपयोग कर रहा हूं:

git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
  sort -n | awk '{ print $4, $3; }' 

यह आदेश कालानुक्रमिक क्रम में प्रत्येक टैग और संबद्ध प्रतिबद्ध वस्तु आईडी को सूचीबद्ध करेगा।


थोडा असंतुष्ट। ... एनोटेट टैग में, 'कमिटेट' खाली है जबकि हल्के टैग में 'टैगगरडेट' खाली है। तो एक हलके के रूप में '* कमिटेट' को Git को मूल प्रतिबद्ध वस्तु से बैकरेफरेंस दिनांक बता रहा है जब यह हल्का होता है। ...
पहुंचें

इसके बजाय 'क्रियेटोर्ड' का उपयोग प्रभावी रूप से एक ही काम करना चाहिए।
ingyhere


5

निम्नलिखित प्रतिबद्ध पर निर्भर करता है, इसलिए यह कोई फर्क नहीं पड़ता कि क्या यह दिनांक जानकारी के साथ है:

git log --tags --decorate --simplify-by-decoration|grep ^commit|grep tag|sed -e 's/^.*: //' -e 's/)$//' -e 's/,.*$//'|tac

जोश ली द्वारा ऊपर दिए गए उत्तर, आदेश को सही करने के लिए एक टैग तिथि पर निर्भर करते हैं।


निश्चित नहीं है कि अनुगामी कमांड क्या tacहै - इसे बदल सकते हैं more। वैसे भी आपकी आज्ञा ने बहुत काम किया - धन्यवाद!
डेविड एच


3

पहले बताए गए तरीकों के आधार पर, मैं सूची में वास्तविक टैग तिथि भी देखना चाहता था, और इसलिए मेरा इन-यूज संस्करण है:

git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(creatordate:short) %(refname) %(*objectname) %(objectname)' refs/tags | sort -n | awk '{ print $3, $5, $4 }'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.