अगर आप इससे खुश नहीं हैं, तो Git में, आप एक रिबास कैसे रोलबैक करते हैं?
रीट के लिए Git में ड्राई-रन नहीं है। यदि मैंने एक रिबेस किया और इसे अभी तक नहीं बढ़ाया है, तो मैं पहले कैसे रोलबैक करूं, जैसे कि यह कभी नहीं हुआ?
अगर आप इससे खुश नहीं हैं, तो Git में, आप एक रिबास कैसे रोलबैक करते हैं?
रीट के लिए Git में ड्राई-रन नहीं है। यदि मैंने एक रिबेस किया और इसे अभी तक नहीं बढ़ाया है, तो मैं पहले कैसे रोलबैक करूं, जैसे कि यह कभी नहीं हुआ?
जवाबों:
आप रिबॉज़ शुरू होने से पहले पहली कार्रवाई खोजने के लिए रीफ़्लॉग का उपयोग कर सकते हैं और फिर इसे वापस रीसेट कर सकते हैं। जैसे
$ git reflog
b710729 HEAD@{0}: rebase: some commit
5ad7c1c HEAD@{1}: rebase: another commit
deafcbf HEAD@{2}: checkout: moving from master to my-branch
...
$ git reset HEAD@{2} --hard
अब आपको रिबास शुरू होने से पहले वापस आ जाना चाहिए।
रीसेट करने के लिए सही जगह खोजने के लिए, आप बस प्रविष्टि को सबसे ऊपर ले जाएँ जो "रिबेस" से शुरू न हो ।
यदि आपके द्वारा शाखा पर किया गया रिबास केवल एक ही चीज़ है , यानी आपके पास कोई अप्रकाशित / परिवर्तन नहीं है - तो आप बस के साथ स्थानीय शाखा को हटा सकते हैं git branch -Dऔर फिर इसे फिर से देख सकते हैं:
$ git checkout my-branch
$ git rebase master
// not happy with result
$ git checkout master
$ git branch -D my-branch
$ git checkout my-branch
या उसी प्रभाव के लिए, आप मूल शाखा को रीसेट कर सकते हैं:
$ git reset --hard origin/my-branch
यदि आपने ऐसा किया जबकि आपके पास अन्य अप्रकाशित कमिट थे, तो आप उन्हें खो देंगे। उस स्थिति में केवल रिफ्लग प्रविष्टि में वापस जाने के लिए ऊपर दिए गए रिफ्लॉग दृष्टिकोण का उपयोग करें जहां आपने कमिट किया था।
ORIG_HEADशाखा के मूल हैश मान के लिए सेट किया जाता है, जिसे रीबेड किया जाता है। तो नंबर 2 के लिए खोजने के बजाय HEAD@{2}, आप बस उपयोग कर सकते हैं ORIG_HEAD... लेकिन केवल अगर ORIG_HEADअभी भी मौजूद नहीं है। Git कमांड का एक गुच्छा इसे (विभिन्न परिस्थितियों में रिबास, एम, रीसेट और मर्ज) सेट करता है।
Rebase पुराने राज्य का बैकअप रखता है ORIG_HEAD।
तो आप पिछले रिबास को चलाकर वापस कर सकते हैं:
git reset --hard ORIG_HEAD