मैं कैसे git में एक टैग के लिए मास्टर शाखा को वापस कर सकता हूं?


87

हमारे पास शाखाएँ हैं और विकसित होती हैं। मास्टर की प्रारंभिक स्थिति को टैग किया गया था tag_ABC

हमारे पास विकसित शाखा में कुछ बदलाव किए गए हैं और मूल की ओर धकेले गए हैं। फिर हम गलती से मास्टर में विकसित हो गए और मूल में धकेल दिए गए।

अब हम गुरु को चौकी पर वापस लाना चाहेंगे tag_ABC। हम वह कैसे कर सकते है?

जवाबों:


159

तुम कर सकते हो

git checkout master
git reset --hard tag_ABC
git push --force origin master

कृपया ध्यान दें कि यह अपस्ट्रीम रेपो में मौजूदा इतिहास को अधिलेखित कर देगा और अन्य डेवलपर्स के लिए समस्या पैदा कर सकता है जिनके पास इस रेपो की जाँच है।


5
इस तरह सभी शाखाओं को बल के साथ धकेल दिया जाएगा। आप कोशिश कर सकते हैंgit push --force origin master
danza

1
संदर्भ के लिए, पिछले प्रतिबद्ध पर वापस जाने के लिए, आप एकgit reset --hard HEAD^
ज्योफ

1
BTW git reset --hard HEAD^का उपयोग एक बार में एक कमिट को वापस करने के लिए कई बार किया जा सकता है, अगर यह रिमोट पर है, तो इसका git push --force origin masterउपयोग किया जा सकता है।
ल्यूक वेनके

इसके अलावा अन्य लोगों की स्थानीय प्रतियों की मास्टर शाखा को पूर्व संस्करण के उपयोग के लिए git pullऔरgit reset --hard origin/master
ल्यूक वेन्के

इस वापसी के बाद थोड़ी सलाह, टीम को बताया जा सकता है: मास्टर शाखा से खींचो !! धन्यवाद!!
JRichardsz

88

यह प्रश्न का सीधा उत्तर नहीं है, लेकिन यह पृष्ठ तब वापस आता है जब किसी शाखा के कोड को टैग रिलीज़ में वापस करने के तरीके खोजता है।

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

अपनी शाखा को मास्टर माना जाता है और जिस टैग को आप वापस जाना चाहते हैं उसे 1.1.1 कहा जाता है

git checkout 1.1.1
git diff master > ~/diff.patch
git checkout master
cat ~/diff.patch | git apply
git commit -am 'Rolled back to version 1.1.1'
git push origin master

19
यह स्वीकृत उत्तर होना चाहिए क्योंकि यह इतिहास को अक्षुण्ण रखता है और दूसरों के लिए समस्या उत्पन्न नहीं करता है जिनके पास रेपो की जाँच है।
OpenUserX03

1
यह सुरुचिपूर्ण लगता है। लेकिन मैंने पिछले टैग के लिए क्यूए शाखा को वापस लाने की कोशिश की और सिर्फ पैच फेल संदेश मिला। $ बिल्ली ../diff_qa.patch | git लागू करें <stdin>: 55: अनुगामी व्हाट्सएप। <स्टड>: 336: व्हॉट्सएप को पीछे छोड़ते हुए। <स्टडेन>: 12692: व्हॉट्सएप को पीछे छोड़ते हुए। <स्टड>: 12695: व्हॉट्सएप को पीछे छोड़ते हुए। <li> {{$ टैग ['रैंक'] + 1}}: <stdin>: 12706: व्हाट्सएप को पीछे छोड़ते हुए। त्रुटि: पैच विफल: .env.wholo: 1
रिकेटेक

मैंने कई समाधानों की कोशिश की है, लेकिन कोई भी काम नहीं किया है। यह एक आकर्षण की तरह काम करता था। बहुत बहुत धन्यवाद @ जॉन
स्ट्रैब

यह करने का सही तरीका है। यह गैर-विनाशकारी है और पूर्ण इतिहास को संरक्षित करता है
नितिन बंसल

यह मेरे लिए काम नहीं करता है। मैं बिना किसी मुद्दे के पहले 3 कमांड चला सकता हूं, लेकिन जब मैं करता हूं cat ~/diff.patch | git apply, तो यह मुझे बताता है error: unrecognized input। कोई उपाय? @NitinBansal शायद आपने हाल ही में टिप्पणी की है?
अनुभव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.