Git टैग का समय और दिनांक प्राप्त करें


87

मेरे पास एक प्रोजेक्ट है जो git का उपयोग कर रहा है और सभी रिलीज़ को एक टैग के साथ टैग किया है।

$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0

मेरा लक्ष्य वेब इंटरफ़ेस में रिलीज़ और रिलीज़ की तारीखों को सूचीबद्ध करना है (टैग / प्रतिबद्ध दिनांक = रिलीज़ की तारीख)। वर्तमान में हम उपयोग करके सभी रिलीज़ को सूचीबद्ध करते हैं git tag

जब टैग बनाया गया था (या इसके लिए यह इंगित करता है) के लिए मुझे समय और तारीख कैसे मिल सकती है?


2
यह यहाँ सटीक है कि यह उस टैग की प्रतिबद्ध तिथि है जो आप के बाद कर रहे हैं। टैग के रूप में कोई तिथि नहीं है।
जॉबवेट


जवाबों:


71

इस --formatतर्क का उपयोग करें git log:

git log -1 --format=%ai MY_TAG_NAME

3
TIP - टैग नाम के साथ "TAG" बदलें। उदाहरण के लिए, git log -1 --format=%ai v0.2.3
टोबियास

5
यदि आप ISO8601 चाहते हैं, तो --format=%aI(राजधानी "I")
चैम एलियाह

git log -1 --format=%ai MY_TAG_NAME | catपेज दृश्य को अक्षम करें
एलिनक्स

"-1" क्या कर रहा है?
ब्लडमस्टर

@ बेलामास्टर यह git logकेवल एक वचन, टैग से संबंधित दिखाने के लिए कहता है। डिफ़ॉल्ट व्यवहार निर्दिष्ट एक वापस से पहले कमिट में रिपॉजिटरी में सभी कमिट दिखाने के लिए है।
user4815162342

82

यह हमेशा मेरे लिए काम करता है:

git log --tags --simplify-by-decoration --pretty="format:%ci %d"

यदि आप एक अलग दिनांक स्वरूपण चाहते हैं, तो प्रारूप स्ट्रिंग के विवरण के लिए "लॉग फॉर्म" अनुभाग के गिट-लॉग मैनपेज से परामर्श करें।


13
हालांकि, यह चेतावनी देने के लिए, यह दिनांक / समय को कमिट करने के लिए सूचीबद्ध करेगा, लेकिन एनोटेट टैग के लिए दिनांक / समय नहीं।
वाईएसएएनएएन

4
बस डाल taglog = log --tags --simplify-by-decoration --pretty='format:%ci %d'(ध्यान दें एकल, नहीं डबल उद्धरण) अपने .gitconfig फ़ाइल के [उर्फ] अनुभाग में, और अब आप एक Git taglog आदेश :) मिल गया है
Lambart

39

एक और विकल्प:

git for-each-ref --format="%(refname:short) | %(creatordate)" "refs/tags/*"

प्रारूप विकल्पों के लिए https://git-scm.com/docs/git-for-each-ref#_field_names देखें

%(creatordate) जिस तारीख को टैग उपयोग पर बनाया गया था, उसे देखने के लिए, प्रतिबद्ध होने की तारीख देता है %(taggerdate)

आप सीधे शेल को शामिल कर सकते हैं:

$> git for-each-ref --shell --format="ref=%(refname:short) dt=%(taggerdate:format:%s)" "refs/tags/*"

ref='v1.10' dt='1483807817'
ref='v1.11' dt='1483905854'
ref='v1.12.0' dt='1483974797'
ref='v1.12.1' dt='1484015966'
ref='v1.13' dt='1484766542'
ref='v1.2' dt='1483414377'
ref='v1.3' dt='1483415058'
ref='v1.3-release' dt='' <-- not an annotated tag, just a pointer to a commit so no 'taggerdate', it would have a 'creator date'.
ref='v1.3.1' dt='1483487085'
ref='v1.4' dt='1483730146'
ref='v1.9' dt='1483802985'

3
यह टैग की तारीख पाने के लिए सबसे अच्छा जवाब है।
जोसेफ के। स्ट्रॉस

वैकल्पिक रूप से, आप यूनिक्स टाइमस्टैम्प git for-each-ref --format="%(taggerdate:unix)" refs/tagsgit for-each-ref --format="%(taggerdate:raw)" refs/tags
आरडी

1
धन्यवाद! अन्य सभी जवाब सिर्फ कमिट डेट देते हैं न कि टैग डेट।
सैम

हां डिफो बेस्ट जवाब क्योंकि यह केवल वास्तविक टैग दिखाता है, सभी कमिट नहीं करता है, शर्म की बात है कि एसओ के पास अन्य उत्तर अधिक हैं।
samthebest

2
कम टाइपिंग के साथ ही परिणाम:git tag --format "%(refname:short) %(creatordate:short)"
एंड्रयू स्पेंसर

27

ध्यान दें कि उपरोक्त दोनों समाधानों में आपको कमिट डेट मिलती है, जो कि रिलीज के लिए टैग किए जाने पर बेतहाशा भिन्न हो सकती है। टैग की तिथि स्वयं प्राप्त करने के लिए, आपको टैग को स्वयं ढूंढना होगा rev-parse, इसे पढ़ें cat-file, और फिर इसे पार्स करें। थोड़ा पाइपलाइन:

git rev-parse v1.0.0 | xargs git cat-file -p | egrep '^tagger' | cut -f2 -d '>'


अच्छा है, केवल समस्या का परिणाम स्वरूपित नहीं होता है (1419372909 -0300)
जोश_जीडी

एक बार जब आपके पास रेव-पार्स से कमिट आईडी है, तो मेरा मानना ​​है कि आप कर सकते हैं: git Rev-parse v1.0.0 | xargs git show -s --pretty =% aI
कीथ

@ अब आप कमिटेड टैग के बजाय कमिटेड टैग के बजाय कमिट के लेखक की तारीख दिखाने के लिए वापस आ गए हैं
Ben

3

ऐसा करने के लिए git टैग कमांड में कोई सरल विकल्प नहीं है। मुझे दौड़ना सबसे सुविधाजनक लगा

git log --decorate=full

यदि कुछ हैं तो टैग सहित सभी कमिट्स को सूचीबद्ध करना। लिस्टिंग के लिए केवल वही उपयोग किए जाते हैं जो टैग किए गए हैं

git log --decorate=full --simplify-by-decoration

विवरण के लिए उपयोग करें

git help log

2

"टैगर" लाइन में दिनांक को मानव-पठनीय के लिए परिवर्तित करने के लिए gawkकोई ( उपयोग नहीं awk) कर सकता है :

git rev-parse v4.4-rc1 | xargs git cat-file -p | gawk '/^tagger/ { print strftime(PROCINFO["strftime"], $(NF-1)) }'

अगर कोई पसंद नहीं करता है gawkतो dateयूनिक्स समय बदलने के लिए इस्तेमाल किया जा सकता है:

git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print "@" $(NF-1) }' | xargs date -d

और उदाहरण ( dnsmasqgit रेपो):

$ git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print "@" $(NF-1) }' | xargs date -d
Wed May 18 16:52:12 CEST 2016

क्या आप अपनी तरफ से यह कोशिश करते हैं ??
विशाल पटेल

निश्चित रूप से। यह काम करता है, dnsmasqउदाहरण के लिए git repo: $ git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print strftime(PROCINFO["strftime"], $(NF-1)) }' Wed May 18 16:52:12 CEST 2016
vladis
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.