Skip to Content
DocsGit & GitHubReal Scenarios

Real Scenarios

Essential | Estimated time: 90–120 minutes

এই সেকশনে সরাসরি প্র্যাকটিক্যাল ব্যবহার দেখানো হয়েছে। এখানে তুমি দেখবে — এতক্ষণ যা শিখেছ সেটা real life-এ কীভাবে কাজ করে। তিনটা আলাদা situation, তিনটা আলাদা walkthrough।

What You’ll See

  • Team Project — কোনো কোম্পানিতে প্রথম দিনে যেভাবে কাজ শুরু করবে
  • Hotfix Workflow — লাইভ সাইটে ইমারজেন্সি সমস্যা সমাধানের নিয়ম
  • Open Source — অন্যের প্রোজেক্টে কন্ট্রিবিউট করার প্রফেশনাল পদ্ধতি

Team Project

একটি নতুন কোম্পানিতে যোগ দেওয়ার পর প্রথম দিনে যেভাবে কাজ শুরু করবে।

Context

এই প্রোজেক্টের পেছনের প্রেক্ষাপট এবং তোমার মূল টাস্কটি বুঝে নাও।

তুমি একটা software company-তে নতুন join করেছ। তোমার team একটা e-commerce website বানাচ্ছে। Team lead তোমাকে বলল:

“আমাদের repo-তে access দিয়েছি। তোমার প্রথম task হলো product listing page-এ একটা filter feature add করা। Issue #23-এ details আছে।“

Repo Setup

টিমের সেন্ট্রাল রিপোজিটরি থেকে কোড নামিয়ে তোমার এনভায়রনমেন্ট সেটআপ করো।

Team lead তোমাকে repository-র link দিয়েছে।

Terminal
# Repo clone করো git clone git@github.com:company/ecommerce-app.git cd ecommerce-app # কোন branches আছে দেখো git branch -a

অনেক company-তে main এ directly কাজ হয় না। develop branch থাকে যেখানে সব feature merge হয়, তারপর সেটা main-এ যায়। Team lead-কে জিজ্ঞেস করো — “কোন branch থেকে আমি কাজ শুরু করব?”

এই scenario-তে team develop branch use করছে।

Terminal
# develop branch-এ switch করো git switch develop # Latest নামাও git pull

Initialize Task

অ্যাসাইন করা কাজটি বুঝে নিয়ে তোমার নিজের ব্রাঞ্চ তৈরি করো।

GitHub-এ Issue #23 দেখলে:

  • Minimum এবং maximum price input দেওয়ার option
  • Filter apply করলে product list update হবে
  • Mobile-এও কাজ করতে হবে
Terminal
# develop থেকে নতুন branch বানাও git switch -c feature/23-product-price-filter

Iterative Work

ধাপে ধাপে কাজ শেষ করো এবং অর্থবহ ছোট ছোট কমিট দাও।

Terminal
# প্রথম দিন — UI বানালে git add src/components/PriceFilter.jsx git commit -m "Add PriceFilter component with min/max inputs" # দ্বিতীয় দিন — Logic যোগ করলে git add src/components/PriceFilter.jsx src/pages/Products.jsx git commit -m "Connect price filter to product listing" # তৃতীয় দিন — Mobile responsive করলে git add src/styles/filter.css git commit -m "Make price filter responsive for mobile"

প্রতিদিন শেষে push করো। কারণ: - তোমার laptop নষ্ট হলেও কাজ হারাবে না - Team lead দেখতে পাবে কাজ এগোচ্ছে

Terminal
git push -u origin feature/23-product-price-filter

Sync Branch

টিমের অন্যদের কাজগুলোর সাথে তোমার ব্রাঞ্চটি সবসময় আপডেট রাখো।

তুমি কাজ করছ, এর মধ্যে teammate অন্য feature merge করেছে develop-এ। তোমার branch পুরনো হয়ে গেছে। Conflict এড়াতে sync করো:

Terminal
git fetch origin git merge origin/develop

Conflict হলে fix করো, তারপর:

Terminal
git add . git commit -m "Sync with develop branch" git push

Create PR

কাজ শেষ করে রিভিউয়ের জন্য একটি পরিষ্কার এবং বিস্তারিত পুল রিকোয়েস্ট (PR) তৈরি করো।

কাজ শেষ। GitHub-এ PR বানাও।

Base: develop Compare: feature/23-product-price-filter Title: Add price filter to product listing — closes #23 Description: ## Summary Product listing page-এ price range filter add করা হয়েছে। ## Changes - PriceFilter component তৈরি করা হয়েছে - Products page-এ filter integrate করা হয়েছে - Mobile responsive design add করা হয়েছে

Review Cycle

রিভিউয়ারের ফিডব্যাক অনুযায়ী কোড আপডেট এবং রি-সাবমিট করার প্রক্রিয়া।

Team lead review করবে। হয়তো বলবে: “PriceFilter component-এ input validation নেই।”

Terminal
# Fix করো git add src/components/PriceFilter.jsx git commit -m "Add input validation to prevent negative prices" git push

PR automatically update হয়ে যাবে। Re-request review করো।

Final Merge

কোড সফলভাবে মার্জ হওয়ার পর পুরোনো ব্রাঞ্চ ডিলিট করে ড্রাইভ ক্লিন করো।

Approved! Merge হলো।

Terminal
git switch develop git pull git branch -d feature/23-product-price-filter

Hotfix Workflow

লাইভ সাইটে হঠাৎ কোনো বাগ আসলে তা ইমারজেন্সি ফিক্স করার নিয়ম।

Critical Scenario

লাইভ সাইটের পেমেন্ট বাটন কাজ না করার মতো ইমারজেন্সি পরিস্থিতি বুঝে নাও।

তুমি একটা agency-তে কাজ করো। তোমাদের client-এর e-commerce site live আছে। রাত ১১টায় client call করল: “Payment button কাজ করছে না! Customer order দিতে পারছে না! এখনই fix করো!” এটাকে বলে hotfix — live site-এ emergency fix।

    • main (live site / production)
    • staging (client দেখে approve করে)
    • develop (developers কাজ করে)

Start Hotfix

আতঙ্কিত না হয়ে সরাসরি মেইন ব্রাঞ্চ থেকে hotfix ব্রাঞ্চ তৈরির নিয়ম।

Terminal
# main branch-এ যাও (live code এখানে) git switch main git pull # hotfix branch বানাও main থেকে git switch -c hotfix/payment-button-broken

develop থেকে না, main থেকে branch বানাও। কারণ develop-এ হয়তো অনেক incomplete কাজ আছে যেটা live-এ যাওয়া উচিত না।

Debug & Fix

দ্রুত বাগ খুঁজে বের করো এবং শুধু প্রয়োজনীয়টুকু ফিক্স করো।

Terminal
# config file update করলে git add src/config/payment.js git commit -m "Fix expired payment API key configuration"

Verification

লাইভ সার্ভারে দেওয়ার আগে পরিবর্তনগুলো লোকাল হোস্ট-এ পরীক্ষা করো।

Local-এ test করো — payment কাজ করছে কিনা।

Stage Deploy

লাইভ করার আগে ক্লায়েন্টকে স্টেজলিং সার্ভারে পরিবর্তনগুলো দেখিয়ে নাও।

Terminal
# staging-এ merge করো git switch staging git merge hotfix/payment-button-broken git push

Client-কে staging link পাঠাও test করতে। Confirm করলে:

Go Live

সবশেষে ফিক্স করা কোডটি মেইন ব্রাঞ্চে মার্জ করে লাইভ করো।

Terminal
# main-এ merge করো git switch main git merge hotfix/payment-button-broken git push # Version tag করো git tag -a v1.2.1 -m "Hotfix: Fix payment button" git push origin v1.2.1

Final Sync

এই জরুরি ফিক্সটি যাতে ফিউচার ভার্সনেও থাকে তার জন্য সব ব্রাঞ্চে আপডেট করো।

এই fix develop branch-এও থাকা দরকার, নইলে পরে আবার bug আসবে:

Terminal
git switch develop git merge hotfix/payment-button-broken git push

Cleanup

Terminal
git branch -d hotfix/payment-button-broken git push origin --delete hotfix/payment-button-broken

Timeline Summary: রাত ১১:০০ — Client call রাত ১১:০৫ — hotfix branch বানানো রাত ১১:২০ — Bug found and fixed রাত ১১:২৫ — Staging-এ deploy রাত ১১:৩০ — Client confirmed রাত ১১:৩৫ — Production-এ deploy রাত ১১:৪০ — Develop-এ merge, cleanup

Open Source

অন্যের কোনো পরিচিত প্রোজেক্টে কন্ট্রিবিউট করার প্রফেশনাল নিয়ম।

Contribution Goal

একটি ডার্ক মোড টেক্সট বাগ ফিক্স করে কন্ট্রিবিউশন শুরু করার প্রেক্ষাপট।

তুমি একটা popular open source documentation tool ব্যবহার করছ। একটা bug পেলে — dark mode-এ code block-এর text দেখা যাচ্ছে না। ঠিক করে contribute করতে চাও।

Search Issue

কাজ শুরু করার আগে প্রোজেক্টের ইস্যু লিস্টে বর্তমান সমস্যাটি খুঁজে দেখো।

আগে দেখো কেউ already এটা report করেছে কিনা। GitHub-এ repository → Issues → Search করো। যদি না থাকে, নতুন issue খোলো। Maintainer reply করল: “Good catch! PR welcome.”

Create Fork

মূল প্রোজেক্টের একটি কপি তোমার নিজের গিটহাব অ্যাকাউন্টে নিয়ে নাও।

Repository page-এ → ForkCreate fork

Setup Repo

ফর্ক করা রিপোজিটরি থেকে নিজের মেশিনে কোড এনে সেটআপ করো।

Terminal
# তোমার fork clone করো git clone git@github.com:তোমার-username/docs-tool.git cd docs-tool # Original repo upstream হিসেবে add করো git remote add upstream git@github.com:original-owner/docs-tool.git

Contribution Rules

যেকোনো ওপেন সোর্স প্রোজেক্টের নিজস্ব কন্ট্রিবিউশন গাইড লাইন পড়ে নাও।

এটা skip করো না। প্রতিটা project-এর নিজস্ব rules আছে।

Terminal
cat CONTRIBUTING.md

New Branch

যেকোনো নতুন বাগ ফিক্স বা ফিচারের জন্য একটি আলাদা ব্রাঞ্চ তৈরি করো।

Terminal
# Latest নামাও upstream থেকে git fetch upstream git switch main git merge upstream/main # Branch বানাও git switch -c fix/dark-mode-code-block-text

Patch Fix

চিহ্নিত করা সমস্যাটি সমাধান করে একটি বিস্তারিত কমিট মেসেজ দাও।

Terminal
git add src/styles/dark-mode.css git commit -m "Fix code block text color in dark mode Code block text was using default color which became invisible against dark backgrounds. Changed to use --code-text CSS variable that adapts to the current theme. Fixes #234"

Open source commit message একটু বিস্তারিত লেখো। Maintainer জানতে চাইবে কেন এই change করলে। Subject line + blank line + explanation — এই format follow করো।

Push & PR

কাজ শেষ করে অরিজিনাল রিপোজিটরির মেইনটেইনারের কাছে পুল রিকোয়েস্ট পাঠাও।

Terminal
git push origin fix/dark-mode-code-block-text

GitHub-এ তোমার fork-এ যাও → Compare & pull request। এবার base repository হবে original repo, তোমার fork না।

Collaboration

ওপেন সোর্স মেইনটেইনারদের সাথে কাজ করার সময় ধৈর্য এবং পেশাদারিত্ব।

Open source-এ review একটু সময় নেয়।

  • ধৈর্য ধরো — ১-২ সপ্তাহ reply না আসলে politely comment করো
  • Maintainer যদি বলে “এভাবে করো” — argue না করে follow করো
  • Merge করতে pressure দেবে না

Update Fork

মূল প্রজেক্টের পরিবর্তনের সাথে তোমার ফর্ক সবসময় আপডেট রাখার নিয়ম।

PR review-এর অপেক্ষায় থাকার সময় original repo এগিয়ে যেতে পারে:

Terminal
git fetch upstream git switch main git merge upstream/main git push origin main

Post Merge

কোড সফলভাবে মার্জ হওয়ার পর পুরোনো ব্রাঞ্চ ডিলিট করে লোকাল রিপোজিটরি ক্লিন করো।

PR merge হলো। তুমি এখন একজন open source contributor।

Terminal
# Cleanup git switch main git fetch upstream git merge upstream/main git push origin main git branch -d fix/dark-mode-code-block-text git push origin --delete fix/dark-mode-code-block-text

Comparison

তিনটি আলাদা বাস্তব পরিস্থিতির মূল পার্থক্যগুলো একনজরে দেখে নাও।

Team ProjectClient ProjectOpen Source
শুরুCloneCloneFork → Clone
Base branchdevelopmain বা developmain
Emergency fixhotfix branchhotfix branch from mainপ্রযোজ্য না
PR যায়নিজের repo-তেনিজের repo-তেOriginal repo-তে
Review করেTeammateTeam leadMaintainer
Merge করেTeam lead বা তুমিTeam leadMaintainer
Upstream syncorigin/developorigin/mainupstream/main

Common Mistakes in Real Projects

Terminal
# ❌ এটা করো না git switch main git add . git commit -m "quick fix" git push

Professional project-এ main protected থাকে। সবসময় branch → PR → merge।

What’s Next?

আমাদের কোর ফাউন্ডেশন (Core Foundations) এখানেই শেষ। তুমি এখন জানো: Setup, Core loop, Branching, GitHub essentials, Real Scenarios.

এরপর কী শিখবে? (Advanced Track)

Topicকেন দরকার
git rebase -iMessy commits clean করতে
git bisectকোন commit-এ bug এসেছে খুঁজে বের করতে
GitHub ActionsAuto test, auto deploy
Branch protection rulesTeam-এর code quality enforce করতে
Conventional CommitsStandard commit message format
git cherry-pickঅন্য branch থেকে specific commit নিতে
Signed commits (GPG)Commit authenticity prove করতে

Search Keywords: team project workflow, emergency hotfix, open source contribution, git best practices

Last updated on