ভুল ব্রাঞ্চে কমিট? অর্ধেক কাজ করা কোড নিয়ে ব্রাঞ্চ চেঞ্জ করতে বিপদ? চিন্তা নেই — সমাধান আছে !
ডেভেলপার হিসেবে আমরা প্রায়ই এমন পরিস্থিতিতে পড়ি যেখানে কাজ অর্ধেক শেষ হয়েছে, কিন্তু হঠাৎ অন্য কোনো ইমার্জেন্সি ফিচারে কাজ করতে হচ্ছে। অথবা এমন হয় যে, অন্য একটি ব্রাঞ্চের মাত্র একটি নির্দিষ্ট কমিট আমার বর্তমান ব্রাঞ্চে দরকার। এই সমস্যাগুলোর সমাধান নিয়ে আজকে আমাদের এই ব্লগ।
আগে যখন আমরা এই টুলগুলো জানতাম না, তখন কী করতাম?
- অর্ধেক কোড নিয়ে ঝামেলা: ধরুন, আপনি একটি ফিচারে কাজ করছেন কিন্তু সেটি এখনও শেষ হয়নি। এখন ইমার্জেন্সি একটা বাগ ফিক্স করতে হবে। আপনি যদি এখন কোডটি ‘Commit’ করেন, তাহলে একটি ইনকমপ্লিট বা ব্রোকেন কোড হিস্ট্রিতে থেকে যাবে। আর যদি ‘Commit’ না করেন, তবে ব্রাঞ্চ সুইচ করা যাবে না।
- ম্যানুয়াল কপি-পেস্ট: অন্য ব্রাঞ্চ থেকে একটি নির্দিষ্ট কোড চেঞ্জ আনতে আমরা ম্যানুয়ালি ফাইল কপি করে আনতাম, যা ভুল হওয়ার সম্ভাবনা বাড়িয়ে দিত এবং সময় নষ্ট করত।

Git Stash: সাময়িক সময়ের জন্য কোড লুকিয়ে রাখা
Git Stash হলো গিটের এমন একটি ফিচার যা আপনার বর্তমান অগোছালো বা আন-কমিটেড চেঞ্জগুলোকে একটি সিক্রেট স্ট্যাক বা লকারে তুলে রাখে। ফলে আপনার ওয়ার্কিং ডিরেক্টরি একদম ক্লিন হয়ে যায়।
গিটে কাজ করার সময় অনেকগুলো স্ট্যাশ (stash) জমা হয়ে গেলে সেগুলো ম্যানেজ করা বা নির্দিষ্ট একটি খুঁজে বের করা খুব গুরুত্বপূর্ণ। নিচে ধাপে ধাপে কমান্ডগুলো দেওয়া হলো:
১. কোড স্ট্যাশ (Stash) করা
সাধারণত git stash দিলে সব সেভ হয়, কিন্তু পরে চেনার সুবিধার্থে মেসেজসহ স্ট্যাশ করা ভালো।
- সাধারণ স্ট্যাশ:
git stash- মেসেজসহ স্ট্যাশ (সেরা উপায়):
git stash push -m "অর্ধেক করা লগইন ফিচার"
২. সব স্ট্যাশ চেক করা (List)
আপনার লকারে বা স্ট্যাশে কয়টি আইটেম জমা আছে এবং সেগুলোর ইনডেক্স নম্বর কত, তা দেখতে নিচের কমান্ডটি দিন:
git stash listআউটপুট দেখতে এমন হবে:
stash@{0}: On main: অর্ধেক করা লগইন ফিচারstash@{1}: On develop: নেভিগেশন বার বাগ ফিক্সstash@{2}: On main: ফুটার ডিজাইন চেঞ্জ
এখানে stash@{0}, stash@{1} এগুলোই হলো আইডেন্টিফায়ার বা ইনডেক্স।
৩. নির্দিষ্ট আইটেম আন-স্ট্যাশ (Unstash) করা
নির্দিষ্ট কোনো কাজ ফিরিয়ে আনার জন্য আপনার কাছে দুটি অপশন আছে:
ক) apply করা (লিস্টে কোডটি থেকে যাবে):
আপনি যদি চান স্ট্যাশ থেকে কোডটি বর্তমান ব্রাঞ্চে আসবে, কিন্তু স্ট্যাশ লিস্টেও সেটি জমা থাকবে (ভবিষ্যতের জন্য), তবে এটি ব্যবহার করুন:
# stash@{1} এর কাজ ফিরিয়ে আনা
git stash apply stash@{1}খ) pop করা (লিস্ট থেকে কোডটি মুছে যাবে):
আপনি যদি নিশ্চিত হন যে এই কাজটির স্ট্যাশ আর দরকার নেই, সরাসরি লিস্ট থেকে মুছে বর্তমান ব্রাঞ্চে নিয়ে আসবেন:
# stash@{2} এর কাজ বের করে আনা এবং লিস্ট থেকে মুছে ফেলা
git stash pop stash@{2}বোনাস টিপস:
- নির্দিষ্ট স্ট্যাশে কী কী চেঞ্জ আছে তা দেখতে: ```bash
- git stash show -p stash@{1}
- সব স্ট্যাশ একসাথে ডিলিট করতে:
git stash clear- নির্দিষ্ট একটি স্ট্যাশ ডিলিট করতে:
git stash drop stash@{1}
Git Cherry-pick: বাছাই করে কোড আনা
সব ফুল না তুলে বাগান থেকে যেমন শুধু পছন্দের ফুলটি ছেঁড়া হয়, Cherry-pick ঠিক তেমনই। অন্য কোনো ব্রাঞ্চের পুরো মার্জ না করে কেবল একটি নির্দিষ্ট ‘Commit’ আপনার বর্তমান ব্রাঞ্চে নিয়ে আসাই হলো চেরি-পিক।
ধরুন আপনার Dev ব্রাঞ্চে ৫টি কমিট আছে, কিন্তু আপনার Production বা Main ব্রাঞ্চে কেবল ৩ নম্বর কমিটটি (যেখানে একটি গুরুত্বপূর্ণ বাগ ফিক্স আছে) দরকার। তখন আপনি চেরি-পিক করবেন।
কিভাবে কাজ করে?
# অন্য ব্রাঞ্চ থেকে নির্দিষ্ট কমিট আইডি দিয়ে কোড আনা
git cherry-pick <commit-hash-id>একাধিক কমিট নিতে চাইলে: (range)
git cherry-pick abc1234..def5678
গিট স্ট্যাশ এবং চেরি-পিক আপনার প্রতিদিনের ডেভেলপমেন্ট লাইফকে অনেক সহজ করে দেবে। স্ট্যাশ দিয়ে ঘর গুছিয়ে রাখুন আর চেরি-পিক দিয়ে প্রোডাকশনে সঠিক কোডটি পাঠান!
No comments:
Post a Comment