সংক্ষিপ্ত উত্তর:
git reset 'HEAD@{1}'
দীর্ঘ উত্তর:
গিট সমস্ত রেফার আপডেটের লগ রাখে (যেমন, চেকআউট, রিসেট, কমিট, মার্জ) merge আপনি এটি টাইপ করে দেখতে পারেন:
git reflog
এই তালিকার কোথাও হ'ল প্রতিশ্রুতি যা আপনি হারিয়েছেন। ধরা যাক আপনি কেবল টাইপ করেছেন git reset HEAD~এবং এটি পূর্বাবস্থায় ফিরিয়ে আনতে চান। আমার রিফ্লোগটি এরকম দেখাচ্ছে:
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
প্রথম লাইনটি বলে যে HEAD0 পজিশন আগে (অন্য কথায়, বর্তমান অবস্থান) 3f6db14; এটিতে পুনরায় সেট করে প্রাপ্ত হয়েছিল HEAD~। দ্বিতীয় লাইনটি বলে যে HEAD1 পজিশন আগে (অন্য কথায়, রিসেটের আগে রাজ্য) 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।