Git में आप किसी विशिष्ट टैग पर वापस कैसे लौटते हैं?


85

मैं जानता हूं कि एक पुरानी शाखा में वापस आने के तरीके कैसे होते हैं, लेकिन मैं एक टैग द्वारा तय की गई शाखा की स्थिति में वापस कैसे लौटूं? मैं कुछ इस तरह की कल्पना करता हूं:

git revert -bytag "Version 1.0 Revision 1.5"

क्या यह संभव है?


क्या आप "ब्रांच को रिवाइंड" करना चाहते हैं (यानी, कमिट हटा दें ), या करंट ब्रांच में एक नई कमिट जोड़ दें , जिससे ब्रांच सेट हो जाए, ताकि सभी फाइलें "उस टैग द्वारा दी गई कमिटमेंट में" हो जाएं?
torek

या तो काम पूरा हो जाना चाहिए, हालांकि मुझे लगता है कि मैं आपके द्वारा बताए गए तरीके से वर्तमान शाखा में एक नई प्रतिबद्धता
जोड़ूंगा

उस स्थिति में, इस उत्तरgit checkout <id> . से विधि का उपयोग करें ।
torek

जवाबों:


130

Git टैग्स कमिट करने के लिए संकेत हैं। इसलिए आप उन्हें उसी तरह इस्तेमाल करते हैं जैसे आप HEAD, ब्रांच नेम या कमिटेड हैश करते हैं। आप किसी भी git कमांड के साथ टैग्स का उपयोग कर सकते हैं जो कमिटमेंट / रिवीजन तर्कों को स्वीकार करता है। आप इसे जिस git rev-parse tagnameओर इंगित करते हैं उसे प्रदर्शित करने के लिए इसे आजमा सकते हैं ।

आपके मामले में आपके पास कम से कम ये दो विकल्प हैं:

  1. विशिष्ट टैग के लिए वर्तमान शाखा को रीसेट करें:

    git reset --hard tagname
    
  2. आपको टैग की स्थिति में लाने के लिए शीर्ष पर फिर से उत्पन्न करें:

    git revert tag
    

यदि आपके पास मर्ज हैं, तो यह कुछ विरोधाभासों का परिचय दे सकता है।


28
मुझे लगता है कि "वर्क रिवर्ट <टैग>" टैग किए गए कमिट में बदलावों को बदल देता है, बजाय इसके वर्जन कॉपी को उस वर्जन पर रिस्टोर करने के।
मैट

अनियंत्रित / अनविंडेड फ़ाइलों से छुटकारा पाने के लिए, stackoverflow.com/a/912737/923560
अब्दुल्ला

3
जैसे @ मट्ट ने कहा, स्वीकृत उत्तर केवल गलत है, क्योंकि यह केवल टैग की गई प्रतिबद्धताओं में परिवर्तन का विरोध करता है। आपका सर्वश्रेष्ठ दांव प्रतिबद्ध हैश का उपयोग करना है, और इस उत्तर का पालन करें: stackoverflow.com/a/4114122/6348485
Swagga Ting

नमस्ते, क्या आप समझा सकते हैं "आप टैग की स्थिति में लाने के लिए शीर्ष पर फिर से प्रतिबद्ध उत्पन्न करें:"? मुझे नहीं पता कि दुर्भाग्य से इसका क्या मतलब है।
जॉन लिटिल


1

आप गिट चेकआउट का उपयोग कर सकते हैं।

मैंने स्वीकृत समाधान की कोशिश की, लेकिन एक त्रुटि मिली, warning: refname '<tagname>' is ambiguous'

लेकिन जैसा कि उत्तर में कहा गया है, टैग एक कमेंट के लिए एक पॉइंटर की तरह व्यवहार करते हैं, इसलिए जैसा कि आप कमिट हैश के साथ करेंगे, आप केवल टैग को चेकआउट कर सकते हैं। एकमात्र अंतर यह है कि आप इसे पहले से प्रस्तुत करते हैं tags/:

git checkout tags/<tagname>

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