এখন পর্যন্ত আমরা সব কাজ main branch-এ করেছি। কিন্তু real world-এ এভাবে কাজ হয় না। Real developer-রা branch ব্যবহার করেন — একটি simple কিন্তু extremely powerful concept।

এই পর্বে আপনি শিখবেন branch কী, কেন beginner থেকে enterprise developer পর্যন্ত সবাই branch ব্যবহার করেন, এবং কীভাবে আপনি নিজের project-এ branch implement করবেন।

🎯 এই পর্বের পর আপনি যা পারবেন

🌳 Branch কী?

Branch হলো আপনার project-এর একটি parallel copy — যেখানে আপনি কাজ করতে পারেন main branch-কে disturb না করে।

সহজ ভাষায়:

মনে করুন আপনার project একটি গাছ। মূল trunk (কাণ্ড) হলো main branch — এটাই আপনার "production" version, stable এবং working।

আপনি যখন নতুন কিছু try করতে চান, একটি নতুন ডাল (branch) বের করেন। সেখানে experiment করেন, কাজ করেন। কাজ সফল হলে — সেই ডাল মূল কাণ্ডের সাথে merge করেন। ব্যর্থ হলে — শুধু সেই ডালটা delete করে দেন (মূল কাণ্ড অক্ষত থাকে)।

আরেকটি analogy: Word Document

মনে করুন আপনি একটি resume বানাচ্ছেন। আপনার কাছে আছে resume.docx (main)। কিন্তু আপনি দুই version try করতে চান — একটা modern style, একটা traditional।

Git branch-ও ঠিক এমন — কিন্তু আরও smart। আপনি আলাদা file তৈরি করেন না — Git internally সব handle করে।

🤔 কেন Branch এত গুরুত্বপূর্ণ?

১. Main Branch সবসময় Stable রাখা

আপনার main branch হলো production version — live website বা deployed app। এটাতে সরাসরি কাজ করলে — bug introduce হলে সবাই দেখবে। Branch-এ কাজ করলে — main untouched থাকে।

২. একসাথে অনেক feature নিয়ে কাজ

আপনি একটা branch-এ "login feature" বানাচ্ছেন, আরেকটা branch-এ "search feature" বানাচ্ছেন। দুটো parallel-এ চলবে, একটা অন্যটাকে block করবে না।

৩. Team Collaboration

৫ জনের team-এ সবাই যদি main-এ কাজ করত — chaos! Branch-এ প্রত্যেকে নিজের feature build করে, ready হলে main-এ merge করে।

৪. Experiment করার Freedom

একটা risky idea try করতে চান? Branch তৈরি করুন। কাজ করলে merge, না করলে delete। Main-এর কিছুই হবে না।

৫. Code Review

Modern team-এ কোনো code main-এ যাওয়ার আগে অন্য কেউ review করেন। Branch + Pull Request — এটাই standard workflow (পরের পর্বে আসছে)।

⚠️ Beginner Rule: Main-এ সরাসরি কাজ করবেন না

Real-world job-এ join করার পর প্রথম দিনই senior দেখেছেন "তুমি main-এ commit করছ?" — সাথে সাথে red flag। সবসময় branch তৈরি করে কাজ করুন।

📊 Branch-এর ধরন

Main Branch (main)

Feature Branch

Bug Fix Branch

Development Branch (dev)

🎨 Visual: Branch কীভাবে কাজ করে

main: ●──────●──────●──────────────────● \ / (merge) \ / feature-navbar: ●──────●──────● (commit) (commit) (commit)

উপরের diagram-এ:

🚀 হাতে-কলমে: প্রথম Branch তৈরি করুন

চলুন আপনার My Portfolio Website project-এ একটি নতুন navbar add করি — একটি feature branch দিয়ে।

Step 1: সব Branch List দেখুন

$ cd Desktop/my-portfolio-website $ git branch * main

এখন শুধু একটাই branch — main। * (star) মানে আপনি বর্তমানে main-এ আছেন।

Step 2: নতুন Branch তৈরি ও Switch

একটি command দিয়ে দুটি কাজ — branch তৈরি ও সেখানে switch:

$ git switch -c feature-navbar Switched to a new branch 'feature-navbar'

Command-এর breakdown:

Verify করুন:

$ git branch * feature-navbar main

এখন আপনি feature-navbar branch-এ আছেন। কোনো কিছু করলে — main-এ effect হবে না।

📜 পুরোনো Command: git checkout

আপনি অনেক tutorial-এ git checkout দেখবেন — এটি পুরোনো command। ২০১৯ সালে Git-এ git switch যোগ করা হয়েছে।

পুরোনো (এখনও কাজ করে)নতুন (Recommended)
git checkout -b feature-navbargit switch -c feature-navbar
git checkout maingit switch main
git checkout feature-navbargit switch feature-navbar

💡 কোনটা use করবেন?

নতুন code-এ git switch ব্যবহার করুন — clearer এবং less error-prone। কিন্তু পুরোনো tutorial বা senior developer-দের code-এ git checkout দেখবেন — সেটাও জানা থাকা ভালো।

✏️ Step 3: Feature Branch-এ কাজ করুন

এখন index.html খুলে একটি navbar যোগ করুন। <body> tag-এর ঠিক ভিতরে এই code যোগ করুন:

<nav> <ul> <li><a href="#home">Home</a></li> <li><a href="#about">About</a></li> <li><a href="#projects">Projects</a></li> <li><a href="#contact">Contact</a></li> </ul> </nav>

Save করুন।

Status check + Commit

$ git status On branch feature-navbar Changes not staged for commit: modified: index.html $ git add . $ git commit -m "Add navigation menu with 4 links" [feature-navbar 4d2e8f1] Add navigation menu with 4 links

🔄 Step 4: Main-এ Switch করুন এবং Compare

এখন একটা মজার কাজ — main-এ ফিরে যান:

$ git switch main Switched to branch 'main'

এখন index.html file খুলুন — navbar নেই! 😲

এটাই branch-এর জাদু। Main branch-এ আপনার navbar-এর code নেই — কারণ সেটা feature-navbar branch-এ আছে।

আবার feature branch-এ যান:

$ git switch feature-navbar Switched to branch 'feature-navbar'

আবার index.html খুলুন — navbar ফিরে এসেছে! ✨

Git automatically file-গুলো branch-এর content অনুযায়ী switch করে। Amazing।

🔀 Step 5: Merge — Feature Branch-কে Main-এ মিশান

Navbar feature পরীক্ষা করে দেখলেন — সব ঠিক আছে। এবার main-এ merge করার সময়।

Step A: Main-এ Switch

$ git switch main Switched to branch 'main'

Step B: Merge চালান

$ git merge feature-navbar Updating 9f8a2b3..4d2e8f1 Fast-forward index.html | 6 ++++++ 1 file changed, 6 insertions(+)

Merge complete! এখন main-এ index.html খুলুন — navbar আছে।

"Fast-forward" মানে কী?

Git বুঝতে পেরেছে — main-এ feature-navbar-এর পর কোনো নতুন commit হয়নি। তাই simple ভাবে main-এর pointer-কে feature-navbar-এর latest commit-এ এগিয়ে দিয়েছে। এটাই "fast-forward merge"।

Step C: GitHub-এ Push

$ git push

আপনার navbar এখন GitHub-এ live! 🎉

🗑️ Step 6: Feature Branch Delete করুন (Optional)

Feature merge হয়ে গেছে — এই branch-এর আর দরকার নেই। Delete করুন:

$ git branch -d feature-navbar Deleted branch feature-navbar (was 4d2e8f1).

Branch list check করুন:

$ git branch * main

শুধু main বাকি। Clean ও simple।

💡 -d vs -D

📋 সব Commands এক জায়গায়

Commandকী করে
git branchসব branch list করে
git branch new-nameনতুন branch তৈরি করে (switch করে না)
git switch -c new-nameনতুন branch তৈরি + switch (modern)
git switch branch-nameExisting branch-এ switch (modern)
git checkout -b new-nameCreate + switch (পুরোনো)
git checkout branch-nameSwitch (পুরোনো)
git merge branch-nameBranch-কে current-এ merge
git branch -d branch-nameMerged branch delete
git branch -D branch-nameForce delete (careful!)
git push -u origin branch-nameনতুন branch GitHub-এ push

🎯 Team Workflow-এর Standard Pattern

Real-world team-এ branch use করার typical pattern:

  1. Project শুরু → main branch created
  2. নতুন কাজ → feature branch তৈরি (e.g., feature-login)
  3. Feature branch-এ কাজ + commits
  4. Branch GitHub-এ push: git push -u origin feature-login
  5. GitHub-এ Pull Request open (পরের পর্বে আসছে)
  6. Team member review করেন
  7. Approve হলে main-এ merge
  8. Feature branch delete

⚠️ Common Beginner Mistakes

1. Main-এ সরাসরি কাজ করা

সমস্যা: Bug introduce করলে production-এ দেখা যাবে।

সমাধান: সব কাজ আগে feature branch-এ — review-এর পর main-এ।

2. Branch Switch করার আগে commit না করা

সমস্যা: Uncommitted changes থাকলে switch error দিতে পারে।

সমাধান: Switch-এর আগে — হয় commit করুন, না হয় git stash দিয়ে temporarily save করুন (পরের পর্বে শিখব)।

3. Confusing Branch Names

সমস্যা: test, new, updates — অর্থহীন।

সমাধান: Descriptive — feature-search-bar, fix-mobile-overflow, refactor-css

4. Pull না করে Branch তৈরি

সমস্যা: Old main থেকে branch তৈরি করলে — merge time-এ conflict।

সমাধান: সবসময় main-এ থাকা অবস্থায় git pull চালিয়ে latest নিন, তারপর branch।

5. Merge-এর আগে current branch ভুল

সমস্যা: git merge চালানোর সময় ভুল branch-এ আছেন।

সমাধান: মনে রাখুন: "Switch to where you want changes, then merge from where they live." Navbar feature → main-এ আনতে চান → main-এ switch করুন → তারপর git merge feature-navbar

6. Branch Push করতে ভুল

সমস্যা: git push error — কারণ new branch GitHub-এ নেই।

সমাধান: নতুন branch প্রথমবার push-এর সময়: git push -u origin branch-name

📝 Practice Tasks

Task 1: Navbar Branch তৈরি করুন

  1. git switch -c feature-navbar
  2. index.html-এ একটি navbar যোগ করুন (উপরের code use করুন)
  3. git add . && git commit -m "Add navigation menu"
  4. git switch main — দেখুন navbar নেই
  5. git switch feature-navbar — দেখুন আবার আছে
  6. git switch main
  7. git merge feature-navbar
  8. git push
  9. GitHub-এ confirm করুন navbar আছে

Task 2: আরেকটি Feature Branch

নিচের যেকোনো একটি কাজ করুন — নতুন branch-এ:
  1. feature-footer — একটি footer যোগ করুন (copyright, social links)
  2. feature-about-section — একটি "About Me" section
  3. feature-skills — একটি "Skills" list
Workflow: switch → edit → commit → switch main → merge → push।

Task 3: Branch Push to GitHub (Not Merge)

এবার একটি branch GitHub-এ push করুন without merging:
  1. git switch -c feature-test
  2. কোনো change করুন + commit
  3. git push -u origin feature-test
  4. GitHub-এ যান — দেখবেন "feature-test" branch দেখাচ্ছে
  5. Branch dropdown-এ click করে দুটি branch দেখুন
এটা পরের পর্বে Pull Request-এর preparation।

🎁 আরও সাহায্য চাই? Bonus Resources দেখুন

📌 সংক্ষেপে — Summary

🎉 Branch এবং merge শিখে গেলেন। পরের পর্বে আমরা GitHub-এ Pull Request শিখব — branch-কে team-এর কাছে review-এর জন্য পাঠানোর professional way।

← আগের পর্ব
পর্ব ৬: Daily Workflow
পরের পর্ব →
পর্ব ৮: Pull Request

📬 পরের পর্ব মিস করতে চান না?

ShadhinPath Newsletter subscribe করুন — Git & GitHub সিরিজের প্রতিটি পর্ব সরাসরি inbox-এ।

📬 Newsletter Subscribe 📚 সম্পূর্ণ সিরিজ

📧 Question? hello@shadhinpath.com

f

প্রতি সপ্তাহে নতুন বাংলা গাইড পেতে চান?

ShadhinPath Facebook page Follow করে রাখুন — Tech career, USA immigration, finance, study abroad — সব নতুন content প্রথমে এখানে আসে।

👍 Facebook-এ Follow করুন