গিট রিসেট
রিসেট কি?
git reset দিয়ে তুমি কমিট হিস্ট্রি থেকে কমিট মুছে ফেলতে পারো। মনে করো — “শেষ কমিটটা ভুল হয়ে গেছে, বাতিল করতে চাই।”
সাবধান: রিসেট হিস্ট্রি চেইঞ্জ করে। গিটহাবে পুশ করার পর রিসেট করা ঝুঁকিপূর্ণ!
তিন ধরনের রিসেট
১. –soft (সবচেয়ে নিরাপদ)
git reset --soft HEAD~1
কি হবে:
- শেষ কমিটটা বাতিল হবে
- কিন্তু ফাইলের চেইঞ্জ স্টেজিং এরিয়াতেই থাকবে
- মানে তুমি চাইলে নতুন মেসেজ দিয়ে আবার কমিট করতে পারো
২. –mixed (ডিফল্ট)
git reset HEAD~1
বা:
git reset --mixed HEAD~1
কি হবে:
- শেষ কমিটটা বাতিল হবে
- ফাইলের চেইঞ্জ ওয়ার্কিং ডিরেক্টরিতে থাকবে (আনস্টেজড)
git addথেকে আবার শুরু করতে হবে
৩. –hard (সবচেয়ে বিপজ্জনক!)
git reset --hard HEAD~1
কি হবে:
- শেষ কমিটটা বাতিল হবে
- ফাইলের চেইঞ্জও মুছে যাবে!
- ফিরিয়ে আনার কোনো সহজ উপায় নেই!
HEAD~1 মানে কি?
HEAD= তুমি এখন যেখানে আছো (শেষ কমিট)HEAD~1= শেষ কমিটের ১টা আগেHEAD~2= শেষ কমিটের ২টা আগেHEAD~3= শেষ কমিটের ৩টা আগে
উদাহরণ
# হিস্ট্রি দেখো
git log --oneline
# a1b2c3d (HEAD -> main) তৃতীয় কমিট
# b2c3d4e দ্বিতীয় কমিট
# c3d4e5f প্রথম কমিট
# শেষ কমিট soft reset (চেইঞ্জ স্টেজড থাকবে)
git reset --soft HEAD~1
# হিস্ট্রি আবার দেখো
git log --oneline
# b2c3d4e (HEAD -> main) দ্বিতীয় কমিট
# c3d4e5f প্রথম কমিট
তৃতীয় কমিটটা গায়েব! কিন্তু ফাইলের চেইঞ্জ এখনো আছে।
কোন রিসেট কখন ব্যবহার করবে?
| রিসেট | চেইঞ্জ কোথায় থাকে | কখন ব্যবহার করবে |
|---|---|---|
--soft | স্টেজিং এরিয়াতে | কমিট মেসেজ বদলাতে চাও |
--mixed | ওয়ার্কিং ডিরেক্টরিতে | কমিট বাতিল করতে চাও, চেইঞ্জ রাখতে চাও |
--hard | সব মুছে যায় | সবকিছু বাতিল করতে চাও |
টিপ: শুরুতে
--softব্যবহার করো।--hardশুধু তখনই ব্যবহার করো যখন ১০০% নিশ্চিত চেইঞ্জগুলো আর দরকার নেই!