Undoing & Cleaning
ভুল মানুষই করে, আর ডেভেলপমেন্টে ভুল হওয়া স্বাভাবিক। Git-এ যেকোনো ভুল শুধরানোর (Undoing) বা আনওয়ান্টেড ফাইল ক্লিন করার শক্তিশালী টুল আছে।
Undoing Commits
1. Git Reset
লোকাল হিস্ট্রি থেকে কমিট মুছে ফেলার জন্য git reset ব্যবহার হয়। এটি ৩ ধরণের হতে পারে:
Soft Reset (
--soft):- কমিট মুছে ফেলে কিন্তু ফাইলগুলো Staging Area-তে রেখে দেয়।
- Use Case: যখন আপনি কমিট মেসেজ বা কিছু ফাইল অ্যাড করতে ভুলে গেছেন এবং আবার কমিট করতে চান।
bashgit reset --soft HEAD~1Mixed Reset (
--mixed- Default):- কমিট মুছে ফেলে এবং ফাইলগুলো Working Directory-তে (Unstaged) রেখে দেয়।
- Use Case: যখন আপনি কাজগুলো রাখতে চান কিন্তু কমিট করতে চান না।
bashgit reset HEAD~1Hard Reset (
--hard):- সবকিছু মুছে ফেলে (Commit + Staging + Working Directory)।
- Use Case: যখন আপনি শেষ কাজের সবকিছু ডিলিট করে আগের অবস্থায় ফিরতে চান। (সতর্ক থাকুন!)
bashgit reset --hard HEAD~1
2. Git Revert
পাবলিক বা শেয়ার্ড ব্রাঞ্চে git reset ব্যবহার করা বিপজ্জনক কারণ এটি হিস্ট্রি মুছে ফেলে। এর বদলে git revert ব্যবহার করুন।
- এটি একটি নতুন কমিট তৈরি করে যা আগের কমিটের কাজগুলো রিভার্স (Reverse) করে দেয়।
- হিস্ট্রি লিনিয়ার থাকে এবং কোনো তথ্য হারায় না।
git revert [commit-hash]Discarding Local Changes
যদি আপনি কোনো ফাইলে পরিবর্তন করেন কিন্তু তা কমিট বা স্টেজ না করে থাকেন, এবং সেই পরিবর্তন বাতিল করতে চান:
Old Way (Checkout)
git checkout filename.txtNew Way (Restore)
Git 2.23+ এ restore কমান্ড এসেছে যা আরো স্পষ্ট।
git restore filename.txt # ফাইলটি আগের অবস্থায় ফিরিয়ে আনে
git restore . # সব ফাইল রিস্টোর করেStash Changes
ধরুন আপনি একটি ফিচারে কাজ করছেন, কিন্তু হঠাৎ জরুরি একটি বাগ ফিক্স করতে অন্য ব্রাঞ্চে যেতে হবে। আপনার বর্তমান কাজ অর্ধেক করা, তাই কমিটও করতে পারছেন না। তখন git stash ব্যবহার করুন।
1. Save Changes
git stash
# অথবা মেসেজসহ
git stash save "Working on login page"এটি আপনার Working Directory ক্লিন করে দেয় এবং পরিবর্তনগুলো মেমোরিতে সেভ রাখে।
2. List Stashes
git stash list3. Apply Stash
কাজ শেষে ফিরে এসে পরিবর্তনগুলো আবার অ্যাপ্লাই করতে:
git stash pop # অ্যাপ্লাই করে এবং স্ট্যাশ লিস্ট থেকে মুছে ফেলে
# অথবা
git stash apply # অ্যাপ্লাই করে কিন্তু রেখে দেয়Cleaning Untracked Files
কখনো কখনো বিল্ড ফাইল বা অপ্রয়োজনীয় ফাইল Working Directory-তে জমা হয় যা .gitignore-এ নেই।
1. Dry Run (Check first)
কোন ফাইলগুলো ডিলিট হবে তা আগে দেখে নেওয়া নিরাপদ:
git clean -n2. Force Delete
ফাইলগুলো পার্মানেন্টলি ডিলিট করতে:
git clean -fd-f: Force-d: Remove directories too