Git: कैसे पता लगाएं कि टैग किस शाखा पर है?


84

मैं वर्तमान में बहुत सारी शाखाओं के साथ एक परियोजना में व्यस्त हूं और मेरे पास पिछले परिवर्तनों के लिए एक टैग है जहां शाखाओं में से एक पर किया गया है। लेकिन मेरे लिए यह स्पष्ट नहीं है कि यह टैग किस शाखा पर है।

कैसे पता लगाएं कि टैग किस शाखा पर है?

जवाबों:


118

और भी छोटा:

git branch --contains tags/<tag>

(यह किसी भी पेड़-ईश संदर्भ के लिए काम करता है)


यदि आप पा सकते हैं कि कौन से टैग से संबंधित है :

 git rev-parse --verify tags/<tag>^{commit}
 # or, shorter:
 git rev-parse tags/<tag>~0

तो फिर तुम मिल सकता है जो शाखा शामिल है कि प्रतिबद्ध

git branch --contains <commit>

जैसा कि नीचे दिए गए ब्रांचेड ब्रांच के लिए user3356885 ने टिप्पणी की है

git branch -a --contains tags/<tag>
git branch -a --contains <commit>

6
Git के मेरे संस्करण पर, 1.7.1, मैं बस कर सकता हूं git branch --contains <tag>
दान मोल्डिंग

@DanMoulding true, मैंने उस रिफ्लेक्ट का जवाब एडिट किया है। मैं शुरू में एक टैग से जुड़ी प्रतिबद्धता को खोजने में दिलचस्पी रखता था।
वॉनच

6
दूरस्थ शाखा पर बनाए गए टैग की तलाश इस मामले में कोई परिणाम नहीं देगी। एक और शब्द, उन शाखाओं के लिए कोई परिणाम नहीं होगा जो स्थानीय रूप से मौजूद नहीं हैं। उसके लिए विकल्प -ए का उपयोग किया जाना चाहिए। git branch -a --contains <tag>। वही काम करेगा।
user3356885

1
दुर्भाग्य से यह रिटर्न कई चीजों: * (सिर 82dd3f0 पर अलग) मास्टर refs / टैग / 0.0.1 परीक्षण-masterBr -> मैं प्रोग्राम के शाखा, कोई सिर की जानकारी या टैग अपने आप उपयोग करना चाहते
Herm

@ शुक्राणु उस मामले में, कोशिश करेंgit branch --no-merge tags/<a-tag>
VonC

30

यदि "git Branch --contains" कुछ भी नहीं करता है, तो सुनिश्चित करें कि आप सभी शाखाओं को शामिल कर रहे हैं, दोनों दूरस्थ और स्थानीय शाखाएँ:

git branch -a --contains <tag>

गिट मदद से:

विशिष्ट गिट-शाखा क्रियाएँ: -a, --all दूरस्थ-ट्रैकिंग और स्थानीय शाखाओं दोनों की सूची


5
git branch --contains tag

मेरे लिए कुछ भी नहीं करता है, लेकिन मैंने इस समस्या का समाधान git gui में पाया ।

इसे इस तरह शुरू करें:

git gui

(मेरे उबंटू पर मुझे इसे पहले स्थापित करना पड़ा sudo apt-get install git-gui।)

फिर मैंने मेनू आइटम रिपॉजिटरी का चयन किया -> सभी शाखा इतिहास की कल्पना करें । परिणामी विंडो में मैंने तब मेनू आइटम फ़ाइल का चयन किया -> सूची संदर्भ

मेरे सभी टैग (और अन्य संदर्भ) को सूचीबद्ध करते हुए एक और विंडो पॉप अप हुई। ये क्लिक करने योग्य हैं और उनमें से एक पर क्लिक करने के बाद मुझे बस शाखाओं की सूची के लिए नीचे के बाएं फ्रेम की जांच करनी थी। इस कदर:

Parent: somesha (message)
Parent: someothersha (another message)
Child:  anothersha (yet another message)
Branches: branch1, master, remotes/origin/branch2, remotes/upstream/branch1, etc
Follows: v1.1.2
Precedes: v1.1.4

3

एक टैग द्वारा संदर्भित प्रतिबद्ध खोजने के बारे में @ VonC की टिप्पणी के संबंध में, बस उपयोग करें:

git show <tag>

चूंकि एक टैग एक विशिष्ट प्रतिबद्ध से जुड़ा हुआ है, इसका उपयोग उस प्रतिबद्ध को दिखाने के लिए किया जा सकता है - जो आपको पूर्ण प्रतिबद्ध विवरण देगा।


0

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

git: क्या प्रति-शाखा टैग जैसा कुछ है?
http://git-scm.com/book/en/Git-Basics-Tagging

यहाँ एक अच्छी व्याख्या है।


0

एक टैग हमेशा कमिट नंबर का जिक्र करता है। उस टैग नंबर का उपयोग करके आप उस शाखा का पता लगा सकते हैं जहाँ से टैग का उपयोग किया गया था:

git for-each-ref | grep ${commit_num} | grep origin | sed "s/.*\///"

0

आप यह भी कोशिश कर सकते हैं, इसी तरह का मामला था और यह मेरे लिए काम करता है

git ls-remote --heads origin | grep $CI_COMMIT_SHORT_SHA  | sed "s/.*\///"

थोड़ा अलग लेकिन @ ttfreeman के जवाब से प्रेरणा लेते हुए


-1

git reflog --date = स्थानीय | grep feature_xxx


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