git pull কী করে?
git pull = git fetch + git merge। এটি রিমোট রিপোজিটরির পরিবর্তনগুলো লোকালে আনে এবং মার্জ করে।
git pull উন্ডো করার উপায়: git reset
সিধা "undo pull" কমান্ড নেই। git reset ব্যবহার করে লোকাল রিপোজিটরি পূর্ববর্তী কমিটে ফেরত নেওয়া যায়।
ধাপে ধাপে উদাহরণ
১. প্রথমে pull করুন
git pull # আউটপুট: Updating 77e7fc0..a8336fa # Fast-forward README.md | 1 +
২. পূর্ববর্তী কমিটের হ্যাশ পেতে git log দেখুন
git log --oneline -5 # 77e7fc0 (HEAD~1) Previous commit message # a8336fa (HEAD) Latest commit (pulled)
৩. হার্ড রিসেট করে পূর্ববর্তী কমিটে ফেরত যান
git reset 77e7fc0 --hard
অথবা রিলেটিভ রেফারেন্স ব্যবহার করুন:
git reset HEAD~1 --hard
ফ্ল্যাগের মানে
| ফ্ল্যাগ | ব্যবহার |
|---|---|
| --hard | ওয়ার্কিং ডিরেক্টরি, স্টেজিং এরিয়া এবং HEAD সব রিসেট করে (সবচেয়ে ডেঞ্জারাস)۔ |
| --mixed (ডিফল্ট) | HEAD এবং স্টেজিং এরিয়া রিসেট করে, ওয়ার্কিং ডিরেক্টরি রেখে দেয়। |
| --soft | শুধু HEAD রিসেট করে, স্টেজিং এবং ওয়ার্কিং ডিরেক্টরি অপরিবর্তিত। |
সতর্কতা ⚠️
--hardব্যবহার করলে **অনকমিটেড চেঞ্জগুলো 永久に হারিয়ে যাবে**।- রিসেট করার আগে
git statusদিয়ে চেক করুন কোনো আনকমিটেড কাজ আছে কিনা। - আপনার কমিটগুলো রিমোটে পুশ করা থাকলে
git push --forceদরকার হতে পারে (সহযোগীদের সাথে কոঅর্ডিনেট করুন)।
বিকল্প: git reflog থেকে রিকভারি
ভুলে গেলে git reflog দিয়ে HEAD-এর ইতিহাস দেখুন এবং 잃어버린 কমিট রিকভার করুন:
git reflog git reset--hard
নিষ্কর্ষ
git reset --hard HEAD~1 হলো git pull উন্ডো করার সবচেয়ে দ্রুত উপায়। কিন্তু এটি ডেস্ট্রাক্টিভ। সতর্কতা অবলম্বন করে এবং অনুপ্রয়োজনীয় ফোর্স পুশ এড়াতে চেষ্টা করুন।