Git में करंट ब्रांच में लेटेस्ट टैग नाम कैसे प्राप्त करें?


462

Git में सबसे हाल का टैग पाने का सबसे सरल तरीका क्या है?

git tag a HEAD
git tag b HEAD^^
git tag c HEAD^
git tag

उत्पादन:

a
b
c

क्या मुझे प्रत्येक टैग के डेटाइम को प्राप्त करने और उनकी तुलना करने के लिए स्क्रिप्ट लिखनी चाहिए?


1
नवीनतम बनाया गया टैग या नवीनतम टैग प्रतिबद्ध दिनांक द्वारा आदेशित? आपका स्वीकृत उत्तर नवीनतम बनाए गए टैग को दिखाता है। यह एक समस्या हो सकती है यदि कोई अस्तित्व के टैग को बदलने का फैसला करता है ...
पैबेल्स

जवाबों:


412

आप एक नज़र डाल सकते हैं git describe, जो आप पूछ रहे हैं के करीब कुछ करता है।


194
इसके साथ --abbrev=0निकटतम एनोटेट टैग
जकुब नारबस्की

13
वर्तमान शाखा में
ब्रिटोहालोरन

42
नवीनतम एनोटेट टैग प्राप्त करने के लिए जो वर्तमान शाखा में केवल वर्तमान प्रतिबद्ध को लक्षित करता है , उपयोग करें । git describe --exact-match --abbrev=0
नफ़तुली काय

5
टिप्पणियों के साथ यह उत्तर, मेरे लिए सही टैग प्रदान नहीं करता था। @ स्पेनियन ने एक सही समाधान प्रदान किया।
हरमन जे। रैडके III

19
git describe --tagsऔर github रिलीज पेज में कॉम आखिरी टैग की तुलना करें
Adriano Resende

627

सबसे हाल का टैग पाने के लिए:

git describe --tags

सबसे हाल का एनोटेट टैग पाने के लिए:

git describe --abbrev=0

2
हां, जैसा कि मैन पेज git describeकहता है: --abbrev=<n> [...] An <n> of 0 will suppress long format, only showing the closest tag.
जियोगोस काइलाफास

22
या बसgit describe --tags
james_womack

5
यदि आपके पास एक ही कमिट के दो टैग हैं, तो यह उत्तर (और शायद दूसरों को) मुश्किल में डालता है। जब तक टैग को टैग नहीं किया जाता है, मुझे लगता है कि गिट के लिए कोई अंतर नहीं है कि दोनों में से कौन सा पहले बनाया गया था।
पॉल लिंच

10
यह स्वीकृत उत्तर होना चाहिए। प्रस्तुत करने के लिए धन्यवाद।
क्रैम्पिकको

6
अगर आप सीधे सबसे हाल के टैग की जांच करना चाहते हैं:git checkout $(git describe --abbrev=0 --tags)
JohnRDOrazio

320

सभी शाखाओं में नवीनतम टैग किए गए प्रतिबद्ध के टैग का उत्पादन करेगा

git describe --tags $(git rev-list --tags --max-count=1)

8
या TAG=$(git describe --tags $(git rev-list --tags --max-count=1))@ वियाम-परसेल
किलियनक

20
यह सबसे अच्छा जवाब है। यह वास्तव में सभी शाखाओं को टैग करता है, न कि केवल वर्तमान शाखा को, जैसा कि वर्तमान "सही" उत्तर करता है।
ब्रिटोहॉलोरन

61
प्रश्न को छोड़कर विशेष रूप से वर्तमान शाखा के लिए पूछता है।
michaeltwofish

3
@michaeltwofish, जिस समय मुझे यह नहीं पता था, मैंने बाद में इसका पता लगाया और अपने उत्तर के अनुसार सही किया। उसके लिए माफ़ करना।
किलियानक

3
नोट: यह कमांड "नवीनतम" टैग लौटाता है, भले ही यह टैग किसी अन्य शाखा पर हो।
एलन झीलियांग फेंग

47

सबसे हाल का टैग पाने के लिए, आप यह कर सकते हैं:

$ git for-प्रत्येक-रेफरी refs / टैग --sort = -taggerdate --format = '% (refname)' --count = 1

बेशक, आप गिनती तर्क या सॉर्ट फ़ील्ड को इच्छानुसार बदल सकते हैं। ऐसा प्रतीत होता है कि आप कुछ अलग प्रश्न पूछने के लिए हो सकते हैं, लेकिन यह इस प्रश्न का उत्तर देता है क्योंकि मैं इसकी व्याख्या करता हूं।


2
यह लगभग वही है जो मैं देख रहा था (सभी शाखाओं में सबसे हालिया टैग), लेकिन कम से कम मेरे संस्करण के साथ (1.7.7.6) टैग दोनों के लिए एक ही क्रम में निर्मित होते हैं --sort=-authordateऔर --sort=authordate
लार्क्स

3
अहा, क्योंकि आप वास्तव में क्या चाहते हैं --sort=-taggerdate। टैग के लिए, authordateऔर committerdateखाली हैं (इसलिए सॉर्ट कुंजी के रूप में बेकार)।
लार्क्स

8
git for-each-ref refs/tags --sort=-taggerdate --format='%(refname:short)' --count=1और भी बेहतर है :)
क्रिस्टोफ़ एबल

5
वास्तव में, एक टिप्पणी के बिना लगभग 5 साल पुराना एक पूरी तरह से सही उत्तर देना? वह सिर्फ असभ्य है।
विलियम पर्ससेल

1
और --points-at=$SHAआपको कमिट हैश के लिए टैग देगा।
रयान

34

इस बारे में कैसा है?

TAG=$(git describe $(git rev-list --tags --max-count=1))

तकनीकी रूप से, आपको आवश्यक रूप से नवीनतम टैग नहीं मिलेगा, लेकिन नवीनतम कमेंट जो टैग किया गया है, जो आपके लिए देख रहे हैं या नहीं हो सकता है।


यह वर्तमान शाखा में नवीनतम टैग नहीं मिलता है, लेकिन किसी भी शाखा के लिए। जो महान है, इसका कारण वही है जिसकी मुझे आवश्यकता थी। धन्यवाद विजेता
19ong में jasongregori

2
आप उपयोग कर सकते हैं आप टैग से मेल खाते नमूने प्राप्त करने के लिए की जरूरत है --tags=<pattern>में rev-list। उदाहरण के लिए, अंतिम संस्करण टैग प्राप्त करेंgit describe --tags $(git rev-list --tags='v[0-9].[0-9]*' --max-count=1)
Wirone

1
$ (git वर्णन - $ $ (git Rev-parse HEAD))
वैदस ज़िलिओनिस

धन्यवाद, यह काम किया है, लेकिन, मुझे --tagsgit describe --tags $(git rev-list --tags --max-count=1)
Gianluca Casati

25

आप निष्पादित कर सकते git describe --tags $(git rev-list --tags --max-count=1)हैं: यहां बात की गई: नवीनतम टैग नाम कैसे प्राप्त करें?


मैंने शीर्ष / स्वीकृत उत्तर के साथ शुरुआत की और अपने तरीके से काम किया। यह पहला उत्तर है जो वास्तव में मुझे नवीनतम टैग देता है (निश्चित नहीं कि क्यों, लेकिन पुराना पुराना git describe ...एक पुराना टैग देता है ?!)
जेरेमी डेविस

यह एकमात्र ऐसा काम है जो मेरे लिए काम करता है। कुछ --abbrev=0उत्तरों की कोशिश की और वे उस टैग के भाग को काट देते हैं जो मुझे चाहिए।
ल्यूक डेविस

22

"सबसे हालिया" गिट के संदर्भ में दो अर्थ हो सकते हैं।

आप का मतलब हो सकता है, "किस टैग में समय में निर्माण की तारीख नवीनतम है", और यहां अधिकांश उत्तर उस प्रश्न के लिए हैं। आपके प्रश्न के संदर्भ में, आप टैग वापस करना चाहेंगेc

या आप का अर्थ हो सकता है "कौन सा टैग कुछ नामित शाखा के लिए विकास के इतिहास में सबसे करीब है", आमतौर पर जिस शाखा पर आप हैं, वह HEAD। आपके प्रश्न में, यह टैग वापस आएगाa

ये अलग हो सकते हैं:

A->B->C->D->E->F (HEAD)
       \     \
        \     X->Y->Z (v0.2)
         P->Q (v0.1)

कल्पना कीजिए डेवलपर tag'ed Zके रूप में v0.2सोमवार को, और फिर tag'ed Qके रूप में v0.1मंगलवार को। v0.1हाल ही में, लेकिन हैv0.2 विकास के इतिहास में HEAD के करीब है, इस मायने में कि वह जिस रास्ते पर है, वह HEAD के करीब है।

मुझे लगता है कि आप आमतौर पर इस दूसरे उत्तर को, विकास के इतिहास में करीब से चाहते हैं। आप git log v0.2..HEADप्रत्येक टैग के लिए आदि का उपयोग करके पता लगा सकते हैं । यह आपको HEAD पर आने वाले पथों की संख्या देता है क्योंकि पथ के बाद से समाप्त होने v0.2वाला पथ HEAD द्वारा पीछा किया जाता है।

यहाँ एक पायथन लिपि है, जो इस जाँच को चलाने वाले सभी टैगों के माध्यम से पुनरावृति करती है, और फिर टैग पथ के परिवर्तित होने के बाद से टैग को कुछ ही दिनों में प्रिंट करता है।

https://github.com/MacPython/terryfy/blob/master/git-closest-tag

git describeकुछ अलग करता है, इसमें वह पहले टैग को खोजने के लिए (जैसे) HEAD से वापस ट्रैक करता है जो HEAD के इतिहास में वापस पथ पर है। Git शब्दों में, उन git describeटैग्स की तलाश करता है जो HEAD से "पहुंच योग्य" हैं। इसलिए यह उन टैगों v0.2को नहीं खोजेगा जो HEAD से वापस पथ पर नहीं हैं, लेकिन एक पथ जो वहां से निकला है।


21

git describe --tags

वर्तमान शाखा द्वारा देखे जा सकने वाले अंतिम टैग को लौटाता है


15
git log --tags --no-walk --pretty="format:%d" | sed 2q | sed 's/[()]//g' | sed s/,[^,]*$// | sed  's ......  '

यदि आप एक कम समय से अधिक की जरूरत है

(git वर्णन --टैग कभी-कभी गलत हैश देता है, मुझे नहीं पता कि क्यों, लेकिन मेरे लिए - max-count 2 डोंट काम)

इस प्रकार आप रिवर्स कालानुक्रमिक क्रम में नवीनतम 2 टैग नामों के साथ सूची प्राप्त कर सकते हैं, पूरी तरह से git 1.8.4 पर काम करता है। जीआईटी के पुराने संस्करणों (जैसे 1.7। *) के लिए, कोई "टैग:" आउटपुट में स्ट्रिंग नहीं है - बस पिछले सेड कॉल को हटा दें

यदि आप 2 से अधिक नवीनतम टैग चाहते हैं - इस "sed 2q" को "sed 5q" या जो भी आपको चाहिए, उसे बदल दें

तब आप आसानी से चर या टैग के लिए हर टैग नाम पार्स कर सकते हैं।


यह वास्तव में मददगार है, कई डेवलपर्स तैनाती के टूटने पर पिछले टैग पर वापस जाकर रिलीज़ प्रक्रिया को स्वचालित करने का प्रयास करेंगे। गज़ब की चीज़ें!!!
AkD

1
इसे और आगे ले जाने के लिए: git log --tags --no-walk --pretty="format:%D" | sed -nr '5q;s;^.*(tag: )([^,]*).*;\2;p' जहाँ %Dआसपास के ()वर्णों को शामिल नहीं किया गया है , और sed5 से शुरू होने वाली 5q को 4 पंक्तियों से पहले छोड़ दिया जाता है, फिर 'टैग: `और पहला', 'के बीच के सभी वर्णों को प्रिंट करता है। इसलिए ... यह मानते हुए कि टैग के अंदर कोई अल्पविराम का उपयोग नहीं किया जाता है, यह पूरी तरह से काम करता है।
धूमकेतु

14

सभी सुझावों में क्या गलत है ( मैथ्यू ब्रेट स्पष्टीकरण को छोड़कर , इस उत्तर पोस्ट की तारीख तक)?

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

$ git log --graph --all --decorate --oneline --simplify-by-decoration

कई परियोजनाएं मेनलाइन से अलग शाखा में रिलीज़ (और इसलिए टैगिंग) करती हैं

इसके मजबूत कारण हैं । बस किसी भी अच्छी तरह से स्थापित जेएस / सीएसएस परियोजनाओं को देखें। उपयोगकर्ता सम्मेलनों के लिए वे DVCS में बाइनरी / मिनिफ़ाइड रिलीज़ फ़ाइलों को ले जाते हैं। स्वाभाविक रूप से प्रोजेक्ट मेंटेनर के रूप में आप अपनी मेनलाइन को कचरा बीनने के लिए इतिहास को अलग नहीं करना चाहते हैं और मेनलाइन से बाहर निर्माण कलाकृतियों के लिए प्रतिबद्ध हैं ।

चूँकि GIT DAG का उपयोग करता है न कि रैखिक इतिहास का - इसलिए दूरी मीट्रिक को परिभाषित करना कठिन है, इसलिए हम कह सकते हैं - ओह, जो मेरे लिए सबसे निकट हैHEAD !

मैं अपनी खुद की यात्रा शुरू करता हूं (अंदर देखें, मैंने इस लंबी पोस्ट को फैंसी प्रूफ इमेज कॉपी नहीं किया है):

Git में ब्रांचिंग के संबंध में अतीत में निकटतम टैग क्या है?

वर्तमान में मेरे पास टैग और संशोधन के बीच दूरी की 4 उचित परिभाषा है और उपयोगिता में कमी के साथ:

  • कम से कम पथ की लंबाई से HEADकरने के लिए मर्ज आधार टैग के साथ
  • और टैग के बीच मर्ज बेस की तारीखHEAD
  • रेव की संख्या जो HEAD से उपलब्ध है लेकिन टैग से पहुंच योग्य नहीं है
  • टैग की तारीख परवाह किए बिना मर्ज बेस

मैं नहीं जानता कि सबसे छोटे रास्ते की लंबाई की गणना कैसे करें

स्क्रिप्ट कि के अनुसार प्रकार टैग तारीख का मर्ज आधार के बीच HEADऔर टैग:

$ git tag \
     | while read t; do \
         b=`git merge-base HEAD $t`; \
         echo `git log -n 1 $b --format=%ai` $t; \
       done | sort

यह अधिकांश परियोजनाओं पर प्रयोग करने योग्य है।

स्क्रिप्ट जो टैग्स की संख्या के अनुसार टैग्स को क्रमबद्ध करती है जो HEAD से उपलब्ध है लेकिन टैग से उपलब्ध नहीं है:

$ git tag \
    | while read t; do echo `git rev-list --count $t..HEAD` $t; done \
    | sort -n

यदि आपके प्रोजेक्ट इतिहास में कमिट्स पर अजीब तारीखें हैं (क्योंकि रिबास या किसी अन्य इतिहास की पुनर्लेखन या कुछ मोरन BIOS बैटरी या अन्य मैजिक को बदलने के लिए भूल जाते हैं जो आप इतिहास में करते हैं) स्क्रिप्ट के ऊपर उपयोग करते हैं।

अंतिम विकल्प (के लिए तिथि टैग परवाह किए बिना की मर्ज आधार ) तिथि उपयोग के अनुसार क्रमबद्ध टैग की सूची प्राप्त करने के लिए:

$ git log --tags --simplify-by-decoration --pretty="format:%ci %d" | sort -r

ज्ञात वर्तमान संशोधन तिथि का उपयोग करने के लिए:

$ git log --max-count=1

ध्यान दें कि git describe --tagsइसका अपने मामलों में उपयोग है, लेकिन परियोजना के इतिहास में मानव अपेक्षित निकटतम टैग खोजने के लिए नहीं ।

नोट आप किसी भी संशोधन पर उपरोक्त व्यंजनों का उपयोग कर सकते हैं, बस HEADजो आप चाहते हैं उसके साथ बदलें !


12

git describe --abbrev=0 --tags

यदि आप नवीनतम टैग नहीं देखते हैं, तो इसे चलाने से पहले मूल प्राप्त करना सुनिश्चित करें:

git remote update


12
git tag -l ac* | tail -n1

उपसर्ग "एसी" के साथ अंतिम टैग प्राप्त करें । उदाहरण के लिए, के साथ नामित टैग ac1.0.0, या ac1.0.5। नामित अन्य टैग 1.0.0, 1.1.0नजरअंदाज कर दिया जाएगा।

git tag -l [0-9].* | tail -n1

अंतिम टैग प्राप्त करें, जिसका पहला चार्ट है 0-9। तो, पहले चार के साथ उन टैग को a-zनजरअंदाज कर दिया जाएगा।

और जानकारी

git tag --help # Help for `git tag`

git tag -l <pattern>

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


tail -n <number> # display the last part of a file
tail -n1 # Display the last item 

अपडेट करें

के साथ git tag --help, sortतर्क के बारे में । यह lexicorgraphic orderडिफ़ॉल्ट रूप से उपयोग करेगा , अगर tag.sortसंपत्ति मौजूद नहीं है।

यदि यह मौजूद है, या lexicographic क्रम अन्यथा, tag.sort चर के लिए कॉन्फ़िगर किए गए मान के लिए ऑर्डर क्रम को अलग करें। Git-config (1) देखें।

Google के बाद, किसी ने कहा कि वाक्यविन्यास के बाद git 2.8.0 समर्थन करता है।

git tag --sort=committerdate

मेरे लिए नहीं, पिछले टैग 2.11.174 है, लेकिन इस प्रिंट 2.11.99 क्योंकि संस्करण में नहीं के रूप में
छंटनी

8
git tag --sort=committerdate | tail -1

कृपया बताएं कि कोड-केवल उत्तर पोस्ट करने के बजाय यह कोड स्निपेट समस्या को कैसे हल करेगा।
अरुण विनोथ

5

निम्नलिखित मामलों में मेरे लिए निम्नलिखित कार्य आपको पिछले दो टैग (उदाहरण के लिए, वर्तमान टैग और पिछले टैग के बीच परिवर्तन लॉग उत्पन्न करने के लिए) की आवश्यकता है। मैंने इसे केवल उसी स्थिति में परीक्षण किया है जहां नवीनतम टैग था HEAD

PreviousAndCurrentGitTag=`git describe --tags \`git rev-list --tags --abbrev=0 --max-count=2\` --abbrev=0`
PreviousGitTag=`echo $PreviousAndCurrentGitTag | cut -f 2 -d ' '`
CurrentGitTag=`echo $PreviousAndCurrentGitTag | cut -f 1 -d ' '`

GitLog=`git log ${PreviousGitTag}..${CurrentGitTag} --pretty=oneline | sed "s_.\{41\}\(.*\)_; \1_"`

यह मेरी आवश्यकताओं के अनुरूप है, लेकिन जैसा कि मैं कोई गिट विज़ार्ड नहीं हूं, मुझे यकीन है कि इसे और बेहतर बनाया जा सकता है। मुझे यह भी संदेह है कि अगर यह इतिहास आगे बढ़ता है तो यह टूट जाएगा। मैं सिर्फ मामले में साझा कर रहा हूं यह किसी की मदद करता है।


4

मेरा पहला विचार है कि क्या आप इसका उपयोग कर सकते हैं git rev-list HEAD, जो रिवर्स कालानुक्रमिक क्रम में सभी रेव्स को सूचीबद्ध करता है, साथ में git tag --contains। जब आप एक रेफरी पाते हैं जहां git tag --containsएक गैर-रिक्त सूची का उत्पादन होता है, तो आपको सबसे हाल का टैग मिला है।


4

यदि आप एक विशेष शाखा पर लगाया गया अंतिम टैग ढूंढना चाहते हैं, तो आप निम्नलिखित प्रयास कर सकते हैं:

git describe --tag $(git rev-parse --verify refs/remotes/origin/"branch_name")

3

यदि आपको एक लाइनर की आवश्यकता है, जो वर्तमान शाखा पर नवीनतम टैग नाम (टैग तिथि द्वारा) प्राप्त करता है :

git for-each-ref refs/tags --sort=-taggerdate --format=%(refname:short) --count=1 --points-at=HEAD

हम इसका उपयोग सेटअप में संस्करण संख्या सेट करने के लिए करते हैं।

आउटपुट उदाहरण:

v1.0.0

विंडोज पर भी काम करता है।


1
लिनक्स (डेबियन स्ट्रेच) पर मुझे मिलता है-bash: syntax error near unexpected token '('
जेरेमी डेविस

1
अगर मैं उस हिस्से को उद्धरण (यानी --format="%(refname:short)") में लपेटता हूं और --points-at=HEADइसे काम करता हूं । उस अंतिम स्विच के साथ यह कुछ भी नहीं लौटाता है, मुझे लगता है क्योंकि मेरे HEADटैग नहीं है?
जेरेमी डेविस

@JeremyDavis, हां मुझे लगता है कि ऐसा इसलिए है क्योंकि आपका HEADटैग नहीं है।
मार्कस

2

यह एक पुराना धागा है, लेकिन ऐसा लगता है कि बहुत से लोग ओपी के सवाल का सबसे सरल, सबसे आसान और सबसे सही उत्तर याद कर रहे हैं: वर्तमान शाखा के लिए नवीनतम टैग प्राप्त करने के लिए, जिसका आप उपयोग करते हैं git describe HEAD। किया हुआ।

संपादित करें: आप किसी भी मान्य refname की आपूर्ति कर सकते हैं, यहां तक ​​कि रिमोट भी कर सकते हैं; यानी, git describe origin/masterआपको नवीनतम टैग बताएगा जो मूल / मास्टर से पहुंच सकता है।


कुछ भी गारंटी नहीं है कि "सबसे हाल का टैग" किसी भी शाखा द्वारा नियंत्रित किया जाता है। दो काम कर समाधान कर रहे हैं for-each-refआदेश ( stackoverflow.com/a/5261470/515973 ) और के संयोजन rev-listऔर describe( stackoverflow.com/a/7979255/515973 )
जुलिएन Carsique

1
यह मेरे लिए सबसे हाल का टैग नहीं है।
कार्ल मॉरिसन

git describe branchname --tagsमेरे लिए शाखा पर नवीनतम टैग प्राप्त करने के लिए काम करता है (git संस्करण
2.12.2

0

केवल वर्तमान शाखा / टैग नाम पर नवीनतम टैग प्राप्त करने के लिए जो वर्तमान शाखा के साथ उपसर्ग करता है, मुझे निम्नलिखित को निष्पादित करना था

BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags --abbrev=0 $BRANCH^ | grep $BRANCH

शाखा मास्टर:

git checkout master

BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags 
--abbrev=0 $BRANCH^ | grep $BRANCH

master-1448

शाखा प्रथा:

git checkout 9.4

BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags 
--abbrev=0 $BRANCH^ | grep $BRANCH

9.4-6

और मेरे अंतिम वेतन वृद्धि और अगले टैगिंग के लिए टैग +1 प्राप्त करने की आवश्यकता है।

BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags  --abbrev=0 $BRANCH^ | grep $BRANCH | awk -F- '{print $NF}'

0

पूछे गए प्रश्न के लिए,

वर्तमान शाखा में नवीनतम टैग नाम कैसे प्राप्त करें

तुम्हें चाहिए

git log --first-parent --pretty=%d | grep -m1 tag:

--first-parentgit logकिसी भी मर्ज किए गए इतिहास का विस्तार नहीं करने के लिए कहता है , --pretty=%dकेवल सजावट को दिखाने के लिए कहता है यानी किसी भी हिट के लिए स्थानीय नाम। grep -m1"सिर्फ एक मैच" कहता है, इसलिए आपको सिर्फ सबसे हाल का टैग मिलता है।


0

यदि आपके टैग क्रमबद्ध हैं:

git tag --merged $YOUR_BRANCH_NAME | grep "prefix/" | sort | tail -n 1

0

यहाँ अनारक्षित टैग बनाम एनोटेट लोगों का अधिक उल्लेख नहीं है। एनोटेट टैग पर 'वर्णन' काम करता है और अननोनॉटेड लोगों की उपेक्षा करता है।

यह बदसूरत है, लेकिन क्या नौकरी का अनुरोध किया गया है और इसे अन्य शाखाओं पर कोई टैग नहीं मिलेगा (और कमांड में निर्दिष्ट एक पर नहीं: नीचे दिए गए उदाहरण में मास्टर)

फ़िल्टरिंग को अनुकूलित (समेकित) किया जाना चाहिए, लेकिन फिर से, यह काम करने लगता है।

git log  --decorate --tags master |grep '^commit'|grep 'tag:.*)$'|awk '{print $NF}'|sed 's/)$//'|head -n 1

आलोचकों का स्वागत है क्योंकि मैं अब इसे इस्तेमाल करने जा रहा हूं :)


-2

नवीनतम टैग नाम पाने का एक और सरल तरीका है

git tag | tail -1

या

TAG=$(git tag | tail -1)

एक चर में इसे संग्रहीत करने के लिए।

git tagसभी उपलब्ध टैगों को सूचीबद्ध करता है और परिणाम होने पर बहुत अंतिम पंक्ति को लौटा देगा।tail-1


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