2012-05-15 20 views
6

मैं जानना चाहता हूं कि गिट में टैग की एक सूची पुनर्प्राप्त करना संभव है (git tag कमांड के परिणाम की तरह), लेकिन सूची केवल एक निश्चित शाखा तक ही सीमित होनी चाहिए।क्या गिट के साथ टैग की एक सूची पुनर्प्राप्त करना संभव है जो केवल एक निश्चित शाखा में मौजूद है?

यदि यह संभव है, तो क्या कोई यह समझा सकता है कि यह कैसे किया जाता है? शायद कुछ पैटर्न-मिलान जादू के साथ?

+0

मैं गलत हो सकता हूं लेकिन इसे (छोटे) स्क्रिप्टिंग की आवश्यकता है – CharlesB

+0

सुनिश्चित नहीं है कि आप क्या चाहते हैं? [शाखा द्वारा निहित सूची टैग] (http://stackoverflow.com/q/2381665/11343) – CharlesB

उत्तर

5

मुझे लगता है कि यह तुम क्या चाहते हो जाएगा:

git log --pretty='%H' <branch> | 
    xargs -n1 git describe --tags --exact-match 2>/dev/null 

यह git log का उपयोग करता है एक शाखा में प्रतिबद्ध की एक सूची प्राप्त करने के लिए, और फिर git describe करने के लिए उन्हें गुजरता है अगर वे एक टैग के अनुरूप देखने के लिए।

+1

+1, सबसे अच्छा तरीका। 'गिट लॉग' में '- सिम्प्लीफाइ-बाय-सजावट 'जोड़कर वास्तव में तेज़ी से बनाया जा सकता है, यह केवल एक ऐसा काम करता है जो एक रेफस्पेक से मेल खाता है ताकि आप * सभी * काम नहीं कर सकें * सभी * – CharlesB

+0

अरे, मैं भी ढूंढ रहा हूं इस तरह के समाधान: मैंने अभी [लिंक] पर एक प्रश्न पोस्ट किया है (http://stackoverflow.com/questions/11316306/listing-the-tags-in-git-from-a- विशिष्ट-branch) और फिर हुआ अपना प्रश्न – iDev

+0

@iDev पढ़ें: क्या आपने लार्क्स के समाधान का प्रयास किया था? क्या यह आपके लिए काम करता है? –

2

एक और दृष्टिकोण नई Git टैग विकल्प --merged

git tag --merged <abranchname> 

commit 5242860 देखें ... (10 Sept 2015) (Git 2.7+, Q4 2015 में) Karthik Nayak (KarthikNayak) द्वारा के साथ संभव हो जाएगा।
(commit 8a54523 में Junio C Hamano -- gitster -- द्वारा विलय, 05 अक्टूबर 2015)

tag.c: लागू '--merged' और '--no-मर्ज किए गए' विकल्प

प्रयोग करें 'ref-filter' एपीआई के लिए '' में '--merged' और '--no-merged' विकल्प लागू करें।

  • '--merged' विकल्प उपयोगकर्ता को केवल नामित प्रतिबद्धता में विलय किए गए टैग सूचीबद्ध करने देता है।
  • '--no-merged' विकल्प उपयोगकर्ता को केवल उन टैग्स को सूचीबद्ध करने देता है जिन्हें नामित प्रतिबद्धता में विलय नहीं किया गया है।

यदि कोई ऑब्जेक्ट प्रदान नहीं किया गया है तो यह ऑब्जेक्ट के रूप में HEAD मानता है।