আগের পর্বে আমরা জেনেছি Git আর GitHub কী এবং তাদের পার্থক্য। এই পর্বে আমরা আরও গভীরে যাব — বুঝব "Version Control" শব্দটির মানে কী, এবং কেন Git ছাড়া কাজ করা প্রায় অসম্ভব।

একটি real scenario দিয়ে শুরু করি। আপনি কি কখনো এই পরিস্থিতিতে পড়েছেন?

📁 my-website/
├── index.html
├── index-backup.html
├── index-final.html
├── index-final-v2.html
├── index-FINAL.html
├── index-FINAL-actually-final.html
├── index-use-this-one.html
└── index-FINAL-DELETE-OTHERS.html 😱

হাসি পাচ্ছে? কিন্তু এটাই reality — Git ছাড়া আমরা সবাই কোনো না কোনো সময় এই অরাজকতায় পড়েছি। আজ আপনি জানবেন কীভাবে Version Control এবং Git এই সমস্যা পুরোপুরি solve করে।

📚 Version Control কী?

Version Control (বাংলায়: সংস্করণ নিয়ন্ত্রণ) হলো একটি system যা আপনার file বা project-এ time-এ time-এ যত change হয় — তার সম্পূর্ণ history record করে রাখে।

সহজ ভাষায়:

Version Control হলো আপনার project-এর "time machine" ⏰। যেকোনো সময় আপনি অতীতে ফিরে যেতে পারেন এবং দেখতে পারেন — গত সপ্তাহে, গত মাসে, এমনকি গত বছরে আপনার file কেমন ছিল।

💡 ছোট্ট example

মনে করুন আপনি একটি resume লিখছেন। আজ লিখলেন version 1। কাল কিছু change করলেন — version 2। পরদিন আবার change করলেন — version 3। হঠাৎ মনে হলো — "version 1-এ আমি যা লিখেছিলাম, সেটাই ভালো ছিল!" Version control থাকলে — এক click-এ version 1 ফিরে পাবেন। না থাকলে — আপনি হারিয়ে ফেলেছেন।

🔥 Git ছাড়া কাজের যত সমস্যা

Git ছাড়া আমরা সবাই এই সাধারণ সমস্যাগুলির মুখোমুখি হই:

সমস্যা ১: File Naming Chaos (নাম রাখার অরাজকতা)

আপনি একটি presentation বানাচ্ছেন — presentation.pptx। কয়েকটি change করার পর save করতে গিয়ে ভাবলেন, "আগের version-এর backup রাখি, যদি কাজে লাগে?" এভাবে শুরু:

presentation.pptx
presentation-v2.pptx
presentation-v3.pptx
presentation-final.pptx
presentation-final-edited.pptx
presentation-FINAL-FINAL.pptx
presentation-use-this.pptx
presentation-boss-approved.pptx
presentation-after-boss-changes.pptx 😵

এক সপ্তাহ পরে আপনি জানেন না কোনটা latest। ৭০% time চলে যায় file খুঁজতে।

সমস্যা ২: পুরোনো version হারিয়ে যাওয়া

আপনি code-এ একটি change করলেন। কাল দেখলেন change টা ভুল ছিল। কিন্তু আগের code আপনি save করার সময় overwrite করে ফেলেছেন। এখন আপনাকে scratch থেকে আবার লিখতে হবে। ১ ঘণ্টার কাজ — অপচয়।

সমস্যা ৩: Team-এ কাজ করতে গিয়ে conflict

আপনি আর আপনার বন্ধু একই file edit করছেন। আপনি লিখলেন paragraph A। সে লিখল paragraph B। সবাই email/WhatsApp-এ file send করছে — শেষে কেউ জানে না কোন file-এ সর্বশেষ change আছে। দুজনের কাজ একসাথে merge করা — পুরো দিনের কাজ।

সমস্যা ৪: "এটা কে change করেছে?" — কেউ জানে না

Team-এর কেউ একটি important line delete করেছে। কে delete করেছে? কখন? কেন? কেউ জানে না — কারণ কোনো log নেই।

সমস্যা ৫: Backup এর সমস্যা

Laptop crash হলো। External hard drive-এ backup ছিল গত মাসের। মাঝখানের ২০ দিনের কাজ — সব শেষ।

✨ Git কীভাবে এই সব সমস্যা solve করে?

Git একটি professional version control system। উপরের সব সমস্যা Git-এর জন্য বাচ্চাদের খেলা। দেখুন কীভাবে:

📁 my-website/
└── index.html // একটাই file — Git বাকি সব version track করে রাখে!

Git's hidden history:
• Commit 1 (3 days ago): "Initial version" ✅
• Commit 2 (2 days ago): "Added contact form" ✅
• Commit 3 (yesterday): "Fixed typo in title" ✅
• Commit 4 (today): "Updated styles" ✅

আপনার folder-এ শুধু একটাই index.html থাকে। কিন্তু Git-এর internal database-এ সব version safely stored। যেকোনো সময় আপনি একটি command চালিয়ে যেকোনো পুরোনো version-এ ফিরে যেতে পারেন।

📌 Git কীভাবে change track করে?

Git তিনটি জাদুকরী জিনিস করে:

Snapshot নেয় আপনি যখন বলেন "এই version save করো" (commit), Git আপনার পুরো project-এর একটি snapshot নেয় — exactly সেই moment-এর state।
প্রতিটি snapshot-কে unique ID দেয় প্রতিটি commit-এর একটি unique ID থাকে (e.g., a3f2c1b)। এই ID দিয়ে আপনি যেকোনো সময় ঐ snapshot-এ ফিরে যেতে পারেন।
Author + Time + Message track করে প্রতিটি commit-এর সাথে — কে করেছে, কখন করেছে, কেন করেছে — সব record থাকে। 6 মাস পরেও আপনি দেখতে পারবেন "কেন এই change করেছিলাম?"

🔄 পুরোনো version কীভাবে recover করবেন?

Git-এ এটি সবচেয়ে সহজ কাজ। দুটি simple scenarios দেখুন:

Scenario A: আজকের ভুল ঠিক করতে গত সপ্তাহের code চাই

আপনি একটি বড় change করেছেন। ১ সপ্তাহ ব্যবহার করার পর বুঝলেন — এটা ভুল। আগের code-এ ফিরতে চান। Git-এ:

Scenario B: শুধু একটি file-এর পুরোনো version চাই

মনে করুন আপনার style.css file-এর গতকালের version দরকার, কিন্তু বাকি সব file-এ আজকের version রাখতে চান। Git এটাও করতে পারে — শুধু সেই একটি file-কে আগের state-এ ফিরিয়ে আনবে।

💡 বাস্তব উদাহরণ

আমি একবার আমার entire website redesign করেছিলাম। ৩ দিন পর realize করলাম — পুরোনো design-ই ভালো ছিল। Git থাকায় — ১ command, ৫ সেকেন্ডে পুরোনো design ফিরে এলো। Git ছাড়া হলে — ৩ দিনের কাজ আবার করতে হতো।

👥 Team-এ একসাথে কাজ করা — Git-এর সবচেয়ে বড় সুবিধা

Git-এর আসল power বের হয় যখন একাধিক জন একসাথে একই project-এ কাজ করেন। দেখুন কীভাবে:

১. সবাই নিজের copy-তে কাজ করেন

আপনি, আপনার বন্ধু, আপনার বস — সবাই same project-এর নিজের নিজের copy নিয়ে কাজ করেন। কেউ কারো কাজে interfere করেন না।

২. সবাই নিজের change "commit" করেন

আপনি যখন প্রস্তুত — আপনার change-গুলি commit করেন। আপনার বন্ধুও তাই করে। দুজনের কাজ আলাদা ভাবে saved।

৩. Git automatically merge করে

সবাই যখন তাদের change GitHub-এ push করে, Git intelligently সবার কাজ একসাথে merge করে। যদি conflict হয় (দুজন একই line edit করলে), Git আপনাকে জিজ্ঞেস করে — "কোনটা রাখব?"

৪. সম্পূর্ণ history সবার সাথে শেয়ার

৬ মাস পরেও যদি কেউ জিজ্ঞেস করে — "এই code-টা কে লিখেছিল?" — Git-এ এক command-এ answer পাওয়া যাবে। কে, কখন, কী লিখেছিল — সব stored।

🏢 কেন Companies Git knowledge expect করে?

আপনি যখন একটি tech company-তে join করবেন, প্রথম দিনই আপনাকে Git ব্যবহার করতে হবে। কেন? কারণ:

  1. Industry standard: Google, Microsoft, Meta, Amazon — সবাই Git ব্যবহার করে। Banking, Healthcare, E-commerce — সব industry।
  2. একসাথে অনেকে কাজ করেন: ১০, ১০০, এমনকি ১০০০ developer একসাথে একই code-base-এ কাজ করেন। Git ছাড়া এটি impossible।
  3. Code review process: Modern company-তে কোনো code production-এ যাওয়ার আগে অন্য কেউ review করেন — Git এই workflow-এর foundation।
  4. CI/CD automation: Git-এ code push করলে automatically test run হয়, deploy হয়। Modern DevOps-এর heart হলো Git।
  5. Audit trail: Banking, healthcare-এর মতো regulated industry-তে — "কে কখন কী change করেছিল" — এই history থাকা legal requirement।

⚠️ Reality check

আপনি যদি resume-এ "Git" না লেখেন — অনেক HR আপনার resume প্রথম screening-এ reject করে দিতে পারেন। এটা এতই basic skill যে এর অনুপস্থিতি = serious red flag।

🎨 Diagram দিয়ে বুঝুন: Git কীভাবে কাজ করে

একটি text-based diagram দিয়ে বুঝি — Git আসলে কী store করে:

আপনার Project Folder: ┌─────────────────────────┐ │ 📁 my-portfolio/ │ │ ├── 📄 index.html │ ← আপনি এটা দেখেন │ ├── 🎨 style.css │ ← আপনি এটা দেখেন │ └── 📋 README.md │ ← আপনি এটা দেখেন │ └── 📦 .git/ │ ← Hidden! Git এখানে সব history রাখে └─────────────────────────┘ Git-এর Internal History: Commit 1 ────► Commit 2 ────► Commit 3 ────► Commit 4 (HEAD) "Initial" "Add nav" "Fix typo" "New section" 3 days ago 2 days ago 1 day ago Just now

প্রতিটি commit একটি "checkpoint"। আপনি যেকোনো checkpoint-এ ফিরে যেতে পারেন। নতুন commit সবসময় আগের commit-এর উপর build হয় — একটি chain এর মতো।

🆚 অন্য Version Control vs Git

Git ছাড়াও আরও কিছু version control system আছে। তুলনা দেখুন:

ToolTypePopularity
GitDistributed (সবার কাছে full copy)🏆 #1 (95%+ developers)
SVN (Subversion)Centralized (server-এ মূল copy)Decreasing (পুরোনো companies)
Mercurial (Hg)Distributedখুবই কম
PerforceCentralizedGame development industry

আপনি যদি একটাই শিখেন — Git শিখুন। বাকি সব tool-এর knowledge শুধু legacy projects-এ লাগে।

🎒 আমাদের Series-এ Version Control

পরের পর্ব থেকে (পর্ব ৩) আমরা hands-on শুরু করব। কিন্তু এই পর্বের concept বুঝে রাখা important কারণ:

📝 Practice Tasks — Post 2-এর জন্য

Task 1: নিজের জীবনে Version Control-এর জায়গা খুঁজুন

নিচের প্রশ্নগুলি ভেবে answer লিখুন:
  1. আপনি কি কখনো final.docx, final2.docx এইভাবে file রেখেছেন? কেন?
  2. আপনার এমন কোনো project আছে কি যেখানে আপনি গত সপ্তাহের version হারিয়ে ফেলেছিলেন?
  3. আপনি যদি ১০ জনের একটি team-এ কাজ করতেন — version control ছাড়া কীভাবে কাজ করতেন?
  4. আপনার দৈনিক জীবনে কোন ৩টি project-এ Git/version control সাহায্য করত?

Task 2: একটি Real-World Project ভাবুন

আপনার পরিচিত কোনো একজনের কথা ভাবুন যার একটি ছোট ব্যবসা আছে (দোকান, freelance, blog, ইত্যাদি)। তাদের কোন ৩টি কাজে Git/version control help করত? লিখে রাখুন।

Hint: Price list, menu, marketing copy, contract templates, social media posts — সব জায়গায় version control valuable।

Task 3: Quick Quiz

নিজেকে answer করুন:
  1. Version control শব্দটির মানে কী?
  2. Git কীভাবে file naming chaos solve করে?
  3. "Commit" শব্দের মানে Git-এ কী?
  4. একটি team-এ Git কীভাবে সাহায্য করে?
  5. কেন companies Git skill expect করে — তিনটি কারণ লিখুন।

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

📌 সংক্ষেপে — Summary

← আগের পর্ব
পর্ব ১: Git vs GitHub পার্থক্য
পরের পর্ব →
পর্ব ৩: Git Install ও Setup

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

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 করুন