Git में पूर्ण संदेश के साथ सभी टैग कैसे सूचीबद्ध करें?


359

मैं चाहता हूं कि सभी एनोटेशन या कमिट मैसेज के साथ सभी टैग्स को सूचीबद्ध करें। कुछ इस तरह के करीब है:

git tag -n5

यह वही करता है जो मैं चाहता हूं सिवाय इसके कि यह केवल टैग संदेश की पहली 5 पंक्तियों तक दिखाई देगा।

मुझे लगता है कि मैं सिर्फ एक बहुत बड़ी संख्या का उपयोग कर सकता हूं। मैं यहां उपयोग की जाने वाली उच्चतम संख्या क्या है? क्या यह हर कंप्यूटर पर समान है?

अद्यतन : मेरे पास इस बारे में सोचने के लिए बहुत समय है, और अब मुझे लगता है कि मैं जरूरी नहीं कि प्रत्येक संदेश की संपूर्णता दिखाना चाहता हूं यदि उनमें से कुछ असाधारण रूप से लंबे हैं। मुझे वास्तव में कोई विशेष आवश्यकता नहीं थी जो मुझे विशाल संदेशों को देखने की आवश्यकता थी (मेरे स्वयं के प्रवृत्ति के अलावा जो कुछ भी मैं लिखता हूं, उसमें टैग संदेश शामिल हैं)। मुझे यह विचार बिलकुल पसंद नहीं आया कि जरूरी नहीं कि वह मुझे पूरा संदेश दिखाए, क्योंकि इससे मुझे ऐसा लग रहा था कि यह मुझसे जानकारी छिपा रहा है। लेकिन बहुत अधिक जानकारी भी एक बुरी चीज हो सकती है।


62
git tag -nमेरे लिए यह किया
मार्टिन बर्जर

11
git tag -nकेवल मेन्यू के अनुसार एनोटेशन की पहली लाइन प्रिंट करता है।
पॉल प्राइस

@INTPner, सहमत, -l टैग एक विशिष्ट पैटर्न के साथ टैग सूचीबद्ध करने के लिए उपयोग किया जाता है। उत्तर का संपादन।
जुबैर

जवाबों:


348

यह कोशिश करें कि यह एनोटेशन के साथ सभी टैग्स को सूचीबद्ध करेगा और हर टैग के लिए संदेश की 9 लाइनें:

git tag -n9

भी उपयोग कर सकते हैं

git tag -l -n9

यदि विशिष्ट टैग सूची में हैं:

git tag -l -n9 v3.*

(उदाहरण के लिए, ऊपर कमांड केवल "v3" से शुरू होने वाले टैग प्रदर्शित करेगा।)

-l, - सूची उन नामों के साथ सूचीबद्ध करें जो दिए गए पैटर्न से मेल खाते हैं (या यदि कोई पैटर्न नहीं दिया गया है)। तर्कों के बिना "गिट टैग" चलाना भी सभी टैगों को सूचीबद्ध करता है। पैटर्न एक शेल वाइल्डकार्ड है (यानी, fnmatch (3) का उपयोग करके मिलान किया गया)। कई पैटर्न दिए जा सकते हैं; यदि उनमें से कोई भी मेल खाता है, तो टैग दिखाया गया है।


6
यह केवल प्रत्येक एनोटेशन की पहली पंक्ति को प्रिंट करेगा।
पॉल प्राइस

3
@ पाओल मूल्य: केवल आपके पास एक एनोटेशन है, अन्यथा यह प्रतिबद्ध संदेश को प्रिंट करता है। सहमत हूँ यह जवाब नहीं है
सिरो सेंटिल्ली 郝海东 冠状 iro i 法轮功 '

3
प्रलेखन के अनुसार, -lविकल्प एक पैटर्न पर फ़िल्टर करना है। मैं यह नहीं देखता कि यहाँ कैसे उपयोगी होगा। क्या मैं कुछ भूल रहा हूँ?
still_dreaming_1 15

2
@INTPnerd हाँ, -lयहाँ पूरी तरह से शानदार है
लेम्बर्ट

1
@ P.MyerNore आप इस सवाल को पूछ रहे हैं की तुलना में कुछ करने के लिए git का एक अजीब संस्करण या अतिरिक्त तर्क पारित करने का उपयोग करना चाहिए। लेकिन यह जानना अच्छा है कि कुछ स्थितियों के लिए -l की जरूरत है।
still_dreaming_1

119
git tag -n99

छोटा एवं सुन्दर। यह प्रत्येक टैग एनोटेशन / कमिट मैसेज से 99 लाइन तक सूचीबद्ध होगा। यहाँ git टैग के लिए आधिकारिक दस्तावेज का लिंक दिया गया है

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

मेरा मतलब है, मुझे लगता है कि बड़े पैमाने पर टैग संदेशों को देखने के लिए एक विशिष्ट स्थिति या कारण हो सकता है, लेकिन आप पूरे संदेश को किस बिंदु पर नहीं देखना चाहते हैं? जब इसकी 999 से अधिक लाइनें हैं? 10,000? 1,000,000? मेरा कहना है कि, आमतौर पर यह समझ में आता है कि आप कितनी लाइनें देखेंगे, और यह संख्या आपको यह सेट करने की अनुमति देती है।

चूँकि मैं आपके टैग्स को देखते हुए जो आप आमतौर पर देखना चाहते हैं, उसके लिए एक तर्क दे रहा हूँ, यह संभवतः कुछ इस तरह से एक उपनाम के रूप में सेट करने के लिए समझ में आता है (नीचे Iulian Onofrei की टिप्पणी से):

git config --global alias.tags 'tag -n99'

मेरा मतलब है, आप वास्तव में git tag -n99हर बार जब आप अपने टैग्स को देखना चाहते हैं, तो आप टाइप नहीं करना चाहते हैं? एक बार उस उपनाम को कॉन्फ़िगर कर दिया जाता है, जब भी आप अपने टैग देखना चाहते हैं, तो आप बस git tagsअपने टर्मिनल में टाइप करेंगे । व्यक्तिगत रूप से, मैं चीजों को इससे एक कदम आगे ले जाना पसंद करता हूं और अपने सभी आमतौर पर उपयोग किए जाने वाले कमांड के लिए और भी संक्षिप्त बैश उपनाम बनाता हूं। उस उद्देश्य के लिए, आप अपनी .bashrc फ़ाइल (लिनक्स और इसी तरह के वातावरण पर काम करता है) में कुछ इस तरह जोड़ सकते हैं:

alias gtag='git tag -n99'

फिर जब भी आप अपने टैग देखना चाहते हैं, आप बस टाइप करें gtag। उर्फ पथ नीचे जाने का एक अन्य लाभ (या तो उपनाम या बैश उपनाम या जो कुछ भी है) अब आपके पास एक जगह पहले से ही है जहां आप आगे अनुकूलन को जोड़ सकते हैं कि आप कैसे व्यक्तिगत रूप से, आमतौर पर अपने टैग को आपको दिखाना चाहते हैं (जैसे सॉर्ट करना) मेरी टिप्पणी के रूप में उन्हें कुछ मायनों में, आदि)। एक बार जब आप अपना पहला उपनाम बनाने की बाधा से पार हो जाते हैं, तो अब आप महसूस करेंगे कि उन चीजों के लिए जिन्हें आप अनुकूलित तरीके से काम करना पसंद करते हैं, उनमें से अधिक बनाना कितना आसान है git log, लेकिन चलो एक अलग प्रश्न / उत्तर के लिए उस एक को बचाएं ।


3
git config --global alias.tags 'tag -n99'
इयूलियन ओनोफ्रेई

@IulianOnofrei, अच्छा, मुझे नहीं पता था कि आपको उपनाम परिभाषित करने की अनुमति नहीं है। मुझे लगता है कि यह बंद विषय है, लेकिन मैं विरोध नहीं कर सकता। यह वही है जो अब मैं उपयोग कर रहा हूं (आपके .bashrc या कुछ इस तरह रखा गया है):alias gtag='git for-each-ref --format="%(refname:short) %(taggerdate) %(subject) %(body)" refs/tags | sort -V'
still_dreaming_1

25

मार्क लॉन्गेयर का उत्तर (उपयोग करना git show) प्रश्न में वांछित के करीब है। हालाँकि, इसमें टैग द्वारा इंगित की गई कमिट भी शामिल है, साथ ही उस कमिट के लिए पूर्ण पैच भी शामिल है। चूंकि कमिट टैग से कुछ असंबंधित हो सकता है (यह केवल एक ही प्रतिबद्ध है कि टैग कैप्चर करने का प्रयास कर रहा है), यह अवांछनीय हो सकता है। मेरा मानना ​​है कि निम्नलिखित कुछ अच्छा है:

for t in `git tag -l`; do git cat-file -p `git rev-parse $t`; done

मार्क के गिट शो ने मेरे उपयोग के लिए पैच नहीं दिखाए। उसकी कमांड -p या --patch को छोड़ देती है, लेकिन अंतर को लंघन करने के लिए पूरी तरह से निश्चित है, कोई भी उपयोग कर सकता है: - कोई-पैच। (git v2.7.1 / mac पर)
ऐनीइगाइल

13

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

for c in $(git for-each-ref refs/tags/ --format='%(refname)'); do echo $c; git show --quiet "$c"; echo; done

वहाँ एक कारण के git for-each-ref refs/tags/ --format='%(refname)'साथ बदलने के लिए नहीं है git tag -l?
Shai Berger

@ शाइबर: व्यवहार में, मुझे ऐसा नहीं लगता - मुझे लगता है कि मैं सिर्फ यह सोच रहा था कि git tagयह चीनी मिट्टी के बरतन है और git for-each-refनलसाजी है, इसलिए स्क्रिप्टिंग के लिए उत्तरार्द्ध का उत्पादन अधिक स्थिर होना चाहिए।
मार्क लॉन्गेयर

10

अंतिम टैग संदेश केवल:

git cat-file -p $(git rev-parse $(git tag -l | tail -n1)) | tail -n +6

2
किसी और के लिए यह Google से हो रहा है: यदि आप संदेश को किसी विशेष टैग से दिखाना चाहते हैं: git cat-file -p <tag> | tail -n +6
किट पीटर्स


2

मैं कमांड लाइन पर ऐसा करना पसंद करता हूं, लेकिन अगर आपको वेब इंटरफ़ेस से कोई आपत्ति नहीं है और आप GitHub का उपयोग करते हैं, तो आप https://github.com/user/repo/tagsप्रत्येक एनोटेशन को प्रदर्शित करने के लिए प्रत्येक टैग के आगे "..." पर जा सकते हैं और क्लिक कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.