git reflog আপনার উদ্ধারে আসতে পারে
এটিকে আপনার কনসোলে টাইপ করুন এবং SHA-1 এর সাথে আপনার গিট ইতিহাসের একটি তালিকা পাবেন যা সেগুলি উপস্থাপন করে।
আপনি ফিরে যেতে চান এমন কোনও SHA-1 কেবল চেকআউট করুন
উত্তর দেওয়ার আগে আসুন এটি কী তা ব্যাখ্যা করে কিছু পটভূমি যুক্ত করুন HEAD।
First of all what is HEAD?
HEADকেবলমাত্র বর্তমান শাখায় বর্তমান প্রতিশ্রুতি (সর্বশেষ) এর একটি উল্লেখ। যে কোনও সময়
কেবলমাত্র একা HEADথাকতে পারে । (বাদে git worktree)
এর সামগ্রীটি HEADভিতরে সঞ্চিত .git/HEADরয়েছে এবং এতে বর্তমান প্রতিশ্রুতিতে 40 বাইট এসএইএ -1 রয়েছে।
detached HEAD
অর্থ যে - আপনি সর্বশেষ কমিট উপর না হন, তাহলে HEADতার নামে একটি পূর্বে নির্দেশ করা হয় ইতিহাসে কমিট detached HEAD।

কমান্ড লাইনে এটি দেখতে শাখা -1 এর পরিবর্তে SHA-1 দেখতে পাবেন যেহেতু HEADবর্তমান শাখার অগ্রভাগের দিকে ইশারা করা হচ্ছে না


বিচ্ছিন্ন হেড থেকে কীভাবে পুনরুদ্ধার করবেন সে সম্পর্কে কয়েকটি বিকল্প:
git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back
এটি পছন্দসই প্রতিশ্রুতি নির্দেশ করে নতুন শাখাটি চেকআউট করবে।
এই আদেশটি প্রদত্ত প্রতিশ্রুতিতে চেকআউট করবে।
এই মুহুর্তে, আপনি একটি শাখা তৈরি করতে পারেন এবং এই বিন্দু থেকে কাজ শুরু করতে পারেন।
# Checkout a given commit.
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
# in order to be able to update the code.
git checkout <commit-id>
# create a new branch forked to the given commit
git checkout -b <branch name>
আপনি সর্বদা reflogপাশাপাশি ব্যবহার করতে পারেন ।
git reflogআপডেট হওয়া কোনও পরিবর্তন প্রদর্শন করবে HEADএবং কাঙ্ক্ষিত রিফ্লগ এন্ট্রি চেক HEADকরা এই প্রতিশ্রুতিতে ফিরে আসবে।
যতবারই হেডের সংশোধন করা হয় সেখানে একটি নতুন প্রবেশ থাকবে reflog
git reflog
git checkout HEAD@{...}
এটি আপনাকে আপনার কাঙ্ক্ষিত প্রতিশ্রুতিতে ফিরিয়ে আনবে

আপনার হেডকে পছন্দসই প্রতিশ্রুতিতে "সরান"।
git reset --hard 0d1d7fc32
git stash
git reset --hard 0d1d7fc32
git stash pop
- দ্রষ্টব্য: ( গিট ২.7 থেকে )
আপনি এটিও ব্যবহার করতে পারেন git rebase --no-autostash।
প্রদত্ত প্রতিশ্রুতি বা প্রতিশ্রুতি ব্যাপ্তি "পূর্বাবস্থায় ফিরিয়ে আনুন"।
রিসেট কমান্ড প্রদত্ত প্রতিশ্রুতিতে যে কোনও পরিবর্তন "পূর্বাবস্থায়" ফেলবে।
পূর্বাবস্থার প্যাচ নিয়ে একটি নতুন প্রতিশ্রুতিবদ্ধ প্রতিশ্রুতিবদ্ধ হবে যখন মূল প্রতিশ্রুতি ইতিহাসেও থাকবে।
git revert <sha-1>
এই স্কিমাটি বোঝায় যে কোন আদেশটি কী করে।
আপনি দেখতে পারেন সেখানে reset && checkoutপরিবর্তন HEAD।
