संक्षिप्त जवाब:
git reset 'HEAD@{1}'
लंबा जवाब:
Git सभी रेफरी अपडेट्स (जैसे, चेकआउट, रीसेट, कमिट, मर्ज) का लॉग रखता है। आप इसे टाइप करके देख सकते हैं:
git reflog
कहीं न कहीं इस सूची में वह प्रतिबद्धता है जो आपने खोई थी। मान लीजिए कि आप बस टाइप करते हैं git reset HEAD~
और इसे पूर्ववत करना चाहते हैं। मेरा रिफ्लोग इस तरह दिखता है:
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
पहली पंक्ति कहती है कि HEAD
0 स्थिति पहले (दूसरे शब्दों में, वर्तमान स्थिति) 3f6db14 है; इसे रीसेट करके प्राप्त किया गया था HEAD~
। दूसरी पंक्ति कहती है कि HEAD
1 स्थिति पहले (दूसरे शब्दों में, रीसेट से पहले की स्थिति) d27924e है। यह एक विशेष प्रतिबद्धता की जांच करके प्राप्त किया गया था (हालांकि यह अभी महत्वपूर्ण नहीं है)। इसलिए, रीसेट को पूर्ववत् करने के लिए, चलाएं git reset HEAD@{1}
(या git reset d27924e
)।
यदि, दूसरी ओर, आपने तब से कुछ अन्य कमांड चलाए हैं, जो उस अपडेट को अपडेट करते हैं, जो आप चाहते हैं वह सूची के शीर्ष पर नहीं होगा, और आपको इसके माध्यम से खोजना होगा reflog
।
एक अंतिम नोट: reflog
जिस विशिष्ट शाखा को आप रीसेट करना चाहते हैं, उसके बजाय मास्टर के बजाय इसे देखना आसान हो सकता है HEAD
:
$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]
यह सामान्य से कम शोर होना चाहिए HEAD reflog
।