আগের পর্বে আমরা GitHub-এ প্রথমবারের মতো push করেছি এবং local ও remote repository-কে যুক্ত করতে শিখেছি। আজকের পর্বে আমরা শিখব Git-এর অন্যতম শক্তিশালী এবং গুরুত্বপূর্ণ একটি concept — Branch।
Branch কেন দরকার?
ধরো তোমার project-টি ইতিমধ্যে ভালোভাবে কাজ করছে এবং GitHub-এ live আছে। এখন তুমি একটি নতুন feature যোগ করতে চাও, কিন্তু নিশ্চিত না যে এটা ঠিকভাবে কাজ করবে কিনা। সরাসরি main branch-এ কাজ করলে, কিছু ভুল হলে পুরো project-ই নষ্ট হয়ে যেতে পারে।
এই সমস্যার সমাধান হলো Branch। Branch দিয়ে তুমি মূল code থেকে আলাদা একটি "কপি"-তে কাজ করতে পারো, আর কাজ শেষ হলে সেটাকে মূল code-এর সাথে merge করতে পারো। ততক্ষণ পর্যন্ত মূল branch (main) সম্পূর্ণ নিরাপদ থাকে।
main ──●──●──●──────────────●──>
\ /
●──●──●────────
feature-branch
এভাবে একই সাথে একাধিক feature, bug fix বা experiment আলাদা আলাদা branch-এ চালানো যায়, একটি আরেকটির সাথে সংঘর্ষ (conflict) না করেই।
বর্তমান Branch দেখা — git branch
তোমার repository-তে বর্তমানে কোন কোন branch আছে তা দেখতে চালাও:
git branch
এই command চালালে সব branch-এর একটি list দেখাবে, আর বর্তমানে তুমি যে
branch-এ আছো তার সামনে একটি *
চিহ্ন দেখাবে:
* main
নতুন Branch তৈরি করা
নতুন একটি branch তৈরি করতে ব্যবহার করা হয়:
git branch feature-navbar
এই command চালালে feature-navbar
নামে একটি নতুন branch তৈরি হবে, কিন্তু তুমি এখনো সেই branch-এ চলে যাওনি —
এখনো main
branch-এই আছো।
Branch পরিবর্তন করা — git checkout / git switch
একটি branch থেকে আরেকটি branch-এ যেতে ব্যবহার করা হয়:
git checkout feature-navbar
Git-এর নতুন version-এ এই কাজের জন্য আরও একটি সহজ command যোগ হয়েছে:
git switch feature-navbar
দুটো command-ই একই কাজ করে — branch পরিবর্তন করে। তবে
git switch
শুধু branch পরিবর্তনের জন্যই তৈরি হয়েছে, তাই এটি বেশি স্পষ্ট এবং নতুনদের
জন্য সহজ।
Branch তৈরি ও পরিবর্তন একসাথে — git checkout -b
প্রতিবার আলাদা করে branch তৈরি করে তারপর switch না করে, একই সাথে দুটো কাজ একবারে করা যায়:
git checkout -b feature-navbar
অথবা নতুন syntax দিয়ে:
git switch -c feature-navbar
এখানে -b
এবং -c
উভয়ই মানে "create" — অর্থাৎ নতুন branch তৈরি করে সাথে সাথে সেখানে চলে যাওয়া।
নতুন Branch-এ কাজ করা
এখন তুমি feature-navbar
branch-এ আছো। এখানে যেকোনো পরিবর্তন করলে, সেটা শুধু এই branch-কেই প্রভাবিত
করবে, main branch অপরিবর্তিত থাকবে:
git add . git commit -m "Add responsive navbar"
এই commit-টি শুধুমাত্র feature-navbar
branch-এ যুক্ত হবে। এখন যদি তুমি main
branch-এ ফিরে যাও, দেখবে navbar-এর পরিবর্তনটি সেখানে নেই — কারণ সেটা
এখনো আলাদা branch-এই আছে।
একাধিক Branch-এ কাজ করার বাস্তব উদাহরণ
ধরো তুমি একটি website নিয়ে কাজ করছ, এবং একই সময়ে দুটো ভিন্ন কাজ করতে চাও — একটি navbar যোগ করা, আরেকটি একটি bug ঠিক করা। তাহলে তুমি এভাবে আলাদা branch ব্যবহার করতে পারো:
git switch -c feature-navbar # navbar নিয়ে কাজ করো, commit করো git switch main git switch -c bugfix-login # login bug ঠিক করো, commit করো git switch main
এভাবে প্রতিটি কাজ সম্পূর্ণ আলাদা এবং পরিষ্কারভাবে organize থাকে, একটি আরেকটির সাথে মিশে যায় না।
Branch-এর নাম দেওয়ার ভালো অভ্যাস
Branch-এর নাম দেখেই যেন বোঝা যায় সেখানে কী কাজ হচ্ছে। কিছু জনপ্রিয় convention:
feature/navbar → নতুন feature bugfix/login-error → bug সমাধান hotfix/security-patch → জরুরি সমাধান docs/update-readme → documentation পরিবর্তন
Branch মুছে ফেলা
কোনো branch-এর কাজ শেষ হয়ে গেলে এবং সেটা আর দরকার না হলে, branch-টি মুছে ফেলা যায়:
git branch -d feature-navbar
মনে রাখবে, একটি branch মুছে ফেলার আগে সেটি main-এর সাথে merge করা উচিত,
নাহলে সেই branch-এর কাজ হারিয়ে যেতে পারে। merge না করা কোনো branch জোর
করে মুছতে চাইলে -D
(capital D) ব্যবহার করতে হয়।
আজকের কমান্ডগুলো এক নজরে
git branch → সব branch দেখা git branch নাম → নতুন branch তৈরি git checkout নাম → branch পরিবর্তন git switch নাম → branch পরিবর্তন (নতুন পদ্ধতি) git checkout -b নাম → তৈরি ও পরিবর্তন একসাথে git switch -c নাম → তৈরি ও পরিবর্তন একসাথে (নতুন) git branch -d নাম → branch মুছে ফেলা
Practice Task
এখন নিজে হাতে নিচের কাজগুলো করে দেখো:
git branchচালিয়ে দেখো তোমার বর্তমান branch কোনটি।git switch -c feature-testদিয়ে একটি নতুন branch তৈরি করে সেখানে যাও।- একটি file পরিবর্তন করে commit করো।
git switch mainদিয়ে main branch-এ ফিরে গিয়ে দেখো পরিবর্তনটি সেখানে নেই।- আবার feature branch-এ ফিরে গিয়ে নিশ্চিত হও যে পরিবর্তনটি এখনো সেখানে আছে।
আজ আমরা শিখলাম কীভাবে branch তৈরি করতে হয়, একটি থেকে আরেকটিতে সুইচ করতে হয়, এবং একাধিক কাজ আলাদা আলাদা branch-এ পরিচালনা করতে হয়। পরের পর্বে আমরা শিখব কীভাবে একটি branch-এর কাজ main branch-এর সাথে merge করতে হয়, এবং merge conflict হলে সেটা কীভাবে সমাধান করতে হয়।