🗂️ Version Control কী এবং কেন ব্যবহার করবে?
প্রতিটি ডেভেলপারের সবচেয়ে গুরুত্বপূর্ণ টুল হলো Version Control System। এটি ছাড়া পেশাদার সফটওয়্যার ডেভেলপমেন্ট কল্পনাই করা যায় না।
🔷 What is Version Control? — Version Control কী?
Version Control System (VCS) হলো এমন একটি সিস্টেম যা সময়ের সাথে ফাইলের প্রতিটি পরিবর্তন রেকর্ড করে রাখে। ফলে তুমি যেকোনো সময় পুরনো যেকোনো সংস্করণে ফিরে যেতে পারো, কে কী পরিবর্তন করেছে দেখতে পারো, এবং একসাথে একাধিক মানুষ একই প্রজেক্টে কাজ করতে পারে কোনো ঝামেলা ছাড়াই।
সহজ ভাষায় বলতে গেলে — VCS হলো তোমার কোডের "Time Machine"। যেকোনো সময় অতীতে ফিরে যেতে পারবে, ভুলগুলো ঠিক করতে পারবে।
VCS ছাড়া ডেভেলপারদের কী হয়?
VCS শেখার আগে অধিকাংশ নতুন ডেভেলপার এই ভুলটি করেন:
১. ইতিহাস হারানো: কোড নষ্ট হলে বা ভুল হলে আগের অবস্থায় ফিরে যাওয়ার কোনো উপায় নেই।
২. দলগত বিশৃঙ্খলা: দুজন একই ফাইলে কাজ করলে একজনের কাজ অন্যজনের কাজ মুছে দেয়।
৩. Accountability নেই: কে কখন কী পরিবর্তন করেছে জানা যায় না।
৪. Backup নেই: কম্পিউটার নষ্ট হলে বা চুরি হলে সব কাজ শেষ।
৫. Experiment করতে ভয়: নতুন কিছু চেষ্টা করলে পুরনো কোড নষ্ট হওয়ার ভয় থাকে।
🔷 Why use Version Control? — কেন ব্যবহার করবে?
VCS শেখা একটি বিনিয়োগ — একবার শিখলে সারাজীবন উপকার পাবে। পেশাদার ডেভেলপমেন্টে VCS জানা অবশ্যক শর্ত।
| সুবিধা | বিবরণ | বাস্তব উদাহরণ |
|---|---|---|
| ইতিহাস সংরক্ষণ | প্রতিটি পরিবর্তন রেকর্ড হয়, যেকোনো সময় ফিরে যাওয়া যায় | গতকালের কোডে ফিরে যেতে একটি কমান্ড |
| দলগত কাজ | একসাথে ১০০ জনও একই প্রজেক্টে কাজ করতে পারে | Alice header, Bob footer — কোনো conflict নেই |
| Online Backup | GitHub-এ push করলে কোড চিরতরে নিরাপদ | ল্যাপটপ চুরি হলেও কোড GitHub-এ থাকে |
| নিরাপদ Experiment | Branch-এ পরীক্ষা করো, main কোড নিরাপদ | নতুন design try করো, পছন্দ না হলে মুছে দাও |
| Code Review | অন্যরা তোমার কোড পরীক্ষা করে comment দিতে পারে | Pull Request → সিনিয়র দেখে approve করে |
| Bug Tracking | কোন commit-এ bug এলো খুঁজে বের করা যায় | git bisect দিয়ে bug-এর সময় খুঁজে পাও |
| Release Management | নির্দিষ্ট version tag করে রাখা যায় | v1.0, v2.0 — যেকোনো version deploy করো |
🔷 Git vs Other VCS — তুলনামূলক আলোচনা
Version Control System দুই ধরনের — Centralized এবং Distributed। আজকের দুনিয়ায় Git (Distributed) সবচেয়ে জনপ্রিয়।
Centralized VCS (CVCS) পুরনো পদ্ধতি
একটি কেন্দ্রীয় সার্ভারে সব কোড থাকে। প্রত্যেক ডেভেলপার সেই সার্ভার থেকে কোড নামায় এবং সার্ভারে পাঠায়। SVN (Subversion) এবং CVS এই ধরনের VCS।
Distributed VCS (DVCS) আধুনিক পদ্ধতি
প্রতিটি ডেভেলপারের কম্পিউটারে সম্পূর্ণ repository থাকে। ইন্টারনেট ছাড়াও কাজ করা যায়। Git এবং Mercurial এই ধরনের।
| বিষয় | Centralized (SVN) | Distributed (Git) |
|---|---|---|
| Offline কাজ | ❌ সম্ভব নয় | ✅ সম্পূর্ণ সম্ভব |
| গতি | ধীর (network-নির্ভর) | দ্রুত (local) |
| History | শুধু central server-এ | সবার কম্পিউটারে |
| Branching | ধীর ও জটিল | দ্রুত ও সহজ |
| Backup | একটি server নষ্ট = সব শেষ | প্রত্যেকের কাছে copy আছে |
| জনপ্রিয়তা | কমে যাচ্ছে | বিশ্বে ৯৮%+ ডেভেলপার |
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🐙 Git পরিচিতি ও ইনস্টলেশন
Git কী, কীভাবে কাজ করে এবং তোমার কম্পিউটারে কীভাবে ইনস্টল করবে — সবকিছু এখানে।
🔷 What is Git? — Git কী?
Git হলো বিশ্বের সবচেয়ে জনপ্রিয় Distributed Version Control System। ২০০৫ সালে Linux-এর জনক Linus Torvalds মাত্র কয়েক সপ্তাহে এটি তৈরি করেছিলেন। আজ বিশ্বের ৯৮%+ ডেভেলপার Git ব্যবহার করেন।
Git তোমার প্রজেক্টের প্রতিটি পরিবর্তনের সম্পূর্ণ ইতিহাস রাখে। কে, কখন, কী পরিবর্তন করেছে এবং কেন করেছে — সব কিছু সংরক্ষিত থাকে।
Git = একটি সফটওয়্যার যা তোমার কম্পিউটারে চলে (Free, Open Source)
GitHub = একটি ওয়েবসাইট যেখানে Git repository online-এ রাখা যায় (Microsoft-এর owned)
Git ছাড়া GitHub চলে না, কিন্তু Git GitHub ছাড়াও একা কাজ করতে পারে।
Git-এর ইতিহাস — একটু গল্প
| সাল | ঘটনা |
|---|---|
| ২০০৫ | Linus Torvalds Linux kernel-এর জন্য Git তৈরি করেন। কারণ ছিল BitKeeper (তখনকার VCS) বিনামূল্যে ব্যবহারের অনুমতি বাতিল হয়ে যাওয়া। |
| ২০০৮ | GitHub চালু হয় — Git repository-র জন্য web-based platform। |
| ২০১১ | GitLab চালু হয় — self-hosted alternative। |
| ২০১৮ | Microsoft GitHub কিনে নেয় $7.5 billion ডলারে। |
| ২০২৩+ | GitHub-এ ১০০ মিলিয়নেরও বেশি ডেভেলপার। বিশ্বের সবচেয়ে বড় code hosting platform। |
🔷 Installing Git Locally — Git ইনস্টল করা
Git তোমার অপারেটিং সিস্টেম অনুযায়ী আলাদাভাবে ইনস্টল করতে হয়। একবার ইনস্টল করলেই হয়, বারবার করতে হয় না।
Windows-এ ইনস্টল Windows
git-scm.com থেকে Windows installer ডাউনলোড করো। ইনস্টলের সময় সব ডিফল্ট option রেখে Next করতে থাকো। ইনস্টলের পর Git Bash নামে একটি terminal পাবে — এটিই ব্যবহার করবে।
macOS-এ ইনস্টল macOS
Linux-এ ইনস্টল Linux
ইনস্টল যাচাই করো
git কমান্ড চলবে। Source Control panel (Ctrl+Shift+G) দিয়ে
graphical-ভাবেও Git ব্যবহার করা যায়। তবে command line শেখা জরুরি — এতে সব কিছু বোঝা যায়।
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
⚙️ git config — প্রথমবারের Setup
Git ইনস্টলের পর একবার কনফিগার করতে হয়। এই তথ্য প্রতিটি commit-এ যোগ হয়।
🔷 Local vs Global Config — কনফিগারেশনের ধরন
Git কনফিগারেশন তিন স্তরে কাজ করে। উপরের স্তর নিচের স্তরকে override করে।
| স্তর | কোথায় সংরক্ষিত | কখন প্রযোজ্য | flag |
|---|---|---|---|
| System | /etc/gitconfig |
কম্পিউটারের সব user-এ | --system |
| Global | ~/.gitconfig |
তোমার সব প্রজেক্টে | --global |
| Local | .git/config |
শুধু এই একটি প্রজেক্টে | (default) |
--global ব্যবহার করো — এতে একবার সেট করলেই
তোমার কম্পিউটারের সব প্রজেক্টে কাজ করবে।
ভিন্ন প্রজেক্টে ভিন্ন নাম/ইমেইল দরকার হলে সেই ফোল্ডারে গিয়ে --local দিয়ে সেট করো।
🔷 Repository Initialization ও প্রথমবারের Config
নাম ও ইমেইল সেট করো অবশ্যই করতে হবে
প্রতিটি commit-এ author-এর নাম ও ইমেইল সংরক্ষিত হয়। GitHub-এর যে ইমেইল ব্যবহার করবে সেটাই এখানে দাও।
অন্যান্য গুরুত্বপূর্ণ Config দরকারি
Aliases — সময় বাঁচানোর শর্টকাট
বারবার একই লম্বা কমান্ড টাইপ করতে হয়। Alias হলো সেই কমান্ডের ছোট ডাকনাম। একবার তৈরি করো, সারাজীবন সময় বাঁচাও।
সব Config দেখো ও যাচাই করো
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
📁 What is a Repository — Repository তৈরি
Repository হলো তোমার প্রজেক্টের সম্পূর্ণ ইতিহাস সহ সব ফাইলের ভান্ডার।
🔷 What is a Repository? — Repository কী?
Repository (সংক্ষেপে repo) হলো একটি বিশেষ ফোল্ডার যেখানে তোমার প্রজেক্টের
সব ফাইল এবং সেই ফাইলগুলোর সম্পূর্ণ পরিবর্তনের ইতিহাস সংরক্ষিত থাকে।
প্রতিটি repository-র ভেতরে একটি লুকানো .git ফোল্ডার থাকে।
এই .git ফোল্ডারটিই হলো আসল repository — এখানেই সব তথ্য জমা থাকে।
দুই ধরনের Repository
| ধরন | কোথায়? | কীভাবে তৈরি? | কাজ |
|---|---|---|---|
| Local Repository | তোমার কম্পিউটারে | git init |
Local-এ কাজ করা |
| Remote Repository | GitHub/GitLab সার্ভারে | GitHub-এ তৈরি করে git clone |
Backup ও দলগত কাজ |
🔷 git init — নতুন Repository শুরু করা
git init কমান্ড দিলে বর্তমান ফোল্ডারে একটি নতুন Git repository তৈরি হয়।
এটি .git ফোল্ডার তৈরি করে এবং Git tracking শুরু করে।
নতুন প্রজেক্টে Git শুরু করা সবচেয়ে সাধারণ
বিদ্যমান প্রজেক্টে Git যোগ করা পুরনো প্রজেক্ট
🔷 git clone — GitHub থেকে Repository নামানো
git clone দিয়ে GitHub বা যেকোনো remote repository-র সম্পূর্ণ কপি —
সব commit history, branch, tag সহ — তোমার কম্পিউটারে নামিয়ে আনা যায়।
HTTPS দিয়ে Clone শুরুতে এটি করো
SSH দিয়ে Clone SSH Key থাকলে
- সম্পূর্ণ প্রজেক্ট ফাইল
- সম্পূর্ণ commit history
- সব branch-এর তথ্য
originনামে remote automatically সেট হয়ে যায়
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🗃️ Working Directory, Staging Area — Git-এর তিনটি অঞ্চল
Git সঠিকভাবে বোঝার সবচেয়ে গুরুত্বপূর্ণ ধারণা — ফাইল তিনটি অঞ্চলের মধ্যে যাতায়াত করে।
🔷 Git-এর তিনটি অঞ্চল
Git-এ যেকোনো ফাইল সবসময় তিনটির মধ্যে একটি অঞ্চলে থাকে। এই তিনটি অঞ্চল বোঝাটা Git শেখার সবচেয়ে গুরুত্বপূর্ণ ধাপ। এটি না বুঝলে পরের সব বিষয় কঠিন লাগবে।
| অঞ্চল | বাংলায় | কী হয় এখানে? | কমান্ড |
|---|---|---|---|
| Working Directory | কাজের জায়গা | তুমি এখানে ফাইল তৈরি, সম্পাদনা, মুছে ফেলো। Git ট্র্যাক করে কিন্তু save করে না। | সাধারণ ফাইল কাজ |
| Staging Area | প্রস্তুতির মঞ্চ | পরবর্তী commit-এ কোন কোন পরিবর্তন নেবে তা বেছে নাও। এটিকে "Index" বলেও জানে। | git add |
| Repository (.git) | ইতিহাস ভান্ডার | Commit হলে পরিবর্তন এখানে চিরতরে সংরক্ষিত হয়। এখান থেকে সরানো কঠিন। | git commit |
ফটোগ্রাফারের উপমায় বোঝো
Working Directory = ফটো তোলার সেশন (তুমি ছবি তুলছো)
Staging Area = কোন ছবিগুলো album-এ রাখবে বেছে নাও
Repository = Photo Album (বেছে নেওয়া ছবি চিরতরে সংরক্ষিত)
একটি ফটো সেশনে ১০০টি ছবি তুললেও সবগুলো album-এ রাখা হয় না — ভালো ছবিগুলো বেছে নেওয়া হয়। Staging Area-ও ঠিক তাই করে।
ফাইলের যাত্রা — step by step
🔷 ফাইলের পাঁচটি অবস্থা — File States
Git-এ প্রতিটি ফাইল পাঁচটির মধ্যে একটি অবস্থায় থাকে।
git status দিলে বর্তমান অবস্থা দেখা যায়।
| অবস্থা | অর্থ | git status-এ দেখায় | পরের পদক্ষেপ |
|---|---|---|---|
| Untracked | নতুন ফাইল — Git এখনো জানে না এটার কথা | Untracked files: index.html (লাল) |
git add index.html |
| Modified | Git চেনে, কিন্তু নতুন পরিবর্তন stage হয়নি | Changes not staged: style.css (লাল) |
git add style.css |
| Staged | Staging Area-তে, commit-এর জন্য প্রস্তুত | Changes to be committed: index.html (সবুজ) |
git commit -m "..." |
| Committed | Repository-তে চিরতরে সংরক্ষিত, নিরাপদ | nothing to commit |
কাজ শেষ ✅ |
| Ignored | .gitignore-এ আছে, Git সম্পূর্ণ উপেক্ষা করে | দেখায় না | কোনো পদক্ষেপ নেই |
git status আউটপুট পড়তে শেখো
🔷 git add — Staging Area-তে যোগ করা
git add দিয়ে তুমি Git-কে বলো "এই পরিবর্তনগুলো পরবর্তী commit-এ রাখতে চাই।"
এটি Staging Area-তে ফাইল যোগ করে।
| কমান্ড | কাজ | কখন ব্যবহার করবে? |
|---|---|---|
git add index.html |
একটি নির্দিষ্ট ফাইল stage করে | শুধু একটি ফাইলের পরিবর্তন নিতে |
git add style.css app.js |
একসাথে একাধিক ফাইল | কয়েকটি নির্দিষ্ট ফাইল |
git add . |
বর্তমান ফোল্ডারের সব পরিবর্তন | সব পরিবর্তন একসাথে নিতে |
git add -A |
সব পরিবর্তন (deleted সহ) | .-এর মতো কিন্তু deleted ফাইলও নেয় |
git add *.css |
সব .css ফাইল | নির্দিষ্ট extension-এর সব ফাইল |
git add css/ |
css/ ফোল্ডারের সব পরিবর্তন | একটি ফোল্ডারের সব |
git add -p |
Interactive — নির্দিষ্ট অংশ stage করো | একই ফাইলের কিছু অংশ নিতে |
বাস্তব উদাহরণ — আলাদা commit-এর জন্য আলাদা add
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
📸 Committing Changes — পরিবর্তন সংরক্ষণ
Commit হলো Git-এর মূল একক — প্রতিটি commit একটি সম্পূর্ণ snapshot।
🔷 Commit কী? — সহজ ব্যাখ্যা
Commit হলো তোমার প্রজেক্টের একটি নির্দিষ্ট মুহূর্তের সম্পূর্ণ snapshot — সেই মুহূর্তে সব ফাইল কেমন ছিল তার সম্পূর্ণ ছবি। প্রতিটি commit একটি unique ID (SHA hash) পায়।
প্রতিটি commit-এ থাকে:
| অংশ | উদাহরণ | কাজ |
|---|---|---|
| SHA Hash | a1b2c3d4e5f6... |
প্রতিটি commit-এর unique ID (40 character) |
| Author | ফরীদুর রহমান <farid@example.com> |
কে commit করেছে |
| Date | Mon Jun 2 10:30:00 2026 +0600 |
কখন commit করেছে |
| Message | feat: নেভিগেশন বার যোগ করা হয়েছে |
কী পরিবর্তন করেছে |
| Parent Hash | আগের commit-এর SHA | ইতিহাসের শৃঙ্খল তৈরি করে |
| Snapshot | সব ফাইলের বিষয়বস্তু | সেই মুহূর্তের সম্পূর্ণ প্রজেক্ট |
Ctrl+S দিয়ে ফাইল save করা এবং
git commit করা সম্পূর্ণ আলাদা জিনিস।
Ctrl+S করলে ফাইল disk-এ save হয়, কিন্তু Git track করে না।
Git-এ সংরক্ষণ করতে হলে git add + git commit করতে হবে।
🔷 git commit — বিভিন্ন পদ্ধতি
git commit --amend শেষ commit পরিবর্তন করে নতুন commit তৈরি করে।
যদি সেই commit ইতিমধ্যে GitHub-এ push করা হয়ে থাকে,
তাহলে amend করা এড়াও — অন্যদের সমস্যা হতে পারে।
🔷 Commit Message লেখার নিয়ম — Best Practice
Commit message হলো ভবিষ্যতের তোমাকে এবং তোমার সহকর্মীদের জন্য চিঠি। ভালো message লেখা একটি professional অভ্যাস যা বড় প্রজেক্টে অপরিহার্য।
Conventional Commits — শিল্পের মানদণ্ড
Conventional Commits হলো commit message-এর একটি জনপ্রিয় মান।
Format: type(scope): description
| type | কখন ব্যবহার? | উদাহরণ |
|---|---|---|
feat: |
নতুন ফিচার যোগ | feat: লগইন পেজ তৈরি করা হয়েছে |
fix: |
Bug ঠিক করা | fix: মোবাইলে মেনু বন্ধ না হওয়ার bug ঠিক |
style: |
শুধু CSS/formatting পরিবর্তন | style: বাটনের রঙ ও padding পরিবর্তন |
docs: |
Documentation পরিবর্তন | docs: README-তে ইনস্টলেশন গাইড |
refactor: |
কোড পুনর্গঠন (ফিচার একই) | refactor: getUserData ফাংশন পুনর্লিখন |
chore: |
Build, dependencies, config | chore: package dependencies আপডেট |
test: |
Test যোগ বা পরিবর্তন | test: login form-এর unit test যোগ |
perf: |
Performance উন্নতি | perf: ছবি lazy loading যোগ করা হয়েছে |
revert: |
পুরনো commit undo করা | revert: feat: login page তৈরি |
Multi-line Commit Message
বড় পরিবর্তনের জন্য বিস্তারিত message লেখা ভালো অভ্যাস:
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🙈 .gitignore — ফাইল উপেক্ষা করা
কিছু ফাইল Git-এ রাখা উচিত নয় — password, auto-generated ফাইল, editor ফাইল। .gitignore দিয়ে সেগুলো বাদ দাও।
🔷 .gitignore কী এবং কেন লাগে?
.gitignore হলো একটি সাধারণ text ফাইল যেখানে তুমি বলে দাও
কোন ফাইল বা ফোল্ডার Git track করবে না।
| ধরন | উদাহরণ | কেন ignore করবে? |
|---|---|---|
| গোপন তথ্য | .env, config.secret.js |
Password, API key — GitHub-এ গেলে বিপদ! |
| Auto-generated | node_modules/, dist/, build/ |
পুনরায় তৈরি করা যায়, commit করার দরকার নেই |
| OS ফাইল | .DS_Store (Mac), Thumbs.db (Win) |
ব্যক্তিগত system ফাইল, অন্যদের দরকার নেই |
| Editor ফাইল | .vscode/, .idea/ |
ব্যক্তিগত editor settings |
| Log ফাইল | *.log, npm-debug.log |
Runtime-এ তৈরি হয়, repository-তে দরকার নেই |
🔷 .gitignore Pattern-এর নিয়ম
Web Project-এর জন্য সম্পূর্ণ .gitignore Copy করো
Already Tracked ফাইল Ignore করতে
যদি কোনো ফাইল আগে commit করা হয়ে গেছে, তারপর .gitignore-এ যোগ করলেও Git সেটা track করতে থাকবে। সমাধান:
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🔍 git diff — পরিবর্তন বিস্তারিত দেখো
Commit করার আগে ঠিক কী পরিবর্তন হয়েছে তা দেখা একটি ভালো অভ্যাস।
🔷 চার ধরনের diff
| কমান্ড | কী দেখাবে | কখন ব্যবহার |
|---|---|---|
git diff |
Unstaged পরিবর্তন (Working Dir বনাম Staging) | Stage করার আগে |
git diff --staged |
Staged পরিবর্তন (Staging বনাম Last Commit) | Commit করার আগে review |
git diff HEAD |
সব পরিবর্তন (Working Dir বনাম Last Commit) | মোট কী পরিবর্তন হয়েছে |
git diff main feature |
দুটো branch-এর পার্থক্য | Merge করার আগে |
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
📜 Commit History — git log বিস্তারিত
Commit history পড়তে পারা মানে প্রজেক্টের পুরো গল্প বুঝতে পারা।
🔷 git log — সব commit দেখো
git show — নির্দিষ্ট Commit-এর বিবরণ
git blame — কে কোন লাইন লিখেছে
git reflog — জীবন রক্ষাকারী কমান্ড ⭐ গুরুত্বপূর্ণ
→
git reset --hard করে ভুলে commit মুছে ফেললে→ ভুলে branch delete করে ফেললে
→ যেকোনো "ভুলে সব নষ্ট হয়ে গেছে" পরিস্থিতিতে — reflog প্রায়ই সব ফিরিয়ে দিতে পারে
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
↩️ পরিবর্তন Undo করা — git restore, revert, reset
Git-এর সবচেয়ে শক্তিশালী দিক হলো যেকোনো পরিবর্তন undo করার ক্ষমতা। কিন্তু ভুল কমান্ড দিলে সমস্যা হতে পারে।
🔷 পরিস্থিতি অনুযায়ী সঠিক কমান্ড
| পরিস্থিতি | সঠিক কমান্ড | নিরাপদ? | পরিবর্তন হারায়? |
|---|---|---|---|
| Stage করা file unstage করো | git restore --staged file.html |
✅ | না — পরিবর্তন Working Dir-এ থাকে |
| Working Dir-এর পরিবর্তন বাতিল | git restore file.html |
⚠️ | হ্যাঁ — forever মুছে যায় |
| সব unstaged পরিবর্তন বাতিল | git restore . |
⚠️ | হ্যাঁ — সব মুছে |
| Commit নিরাপদে বাতিল (new commit) | git revert a1b2c3d |
✅ সবচেয়ে নিরাপদ | না — history রেকর্ড থাকে |
| শেষ commit বাতিল, staged রাখো | git reset --soft HEAD~1 |
✅ | না — Staging Area-তে থাকে |
| শেষ commit বাতিল, unstaged রাখো | git reset HEAD~1 |
⚠️ | না — Working Dir-এ থাকে |
| শেষ commit + সব পরিবর্তন মুছো | git reset --hard HEAD~1 |
❌ বিপজ্জনক | হ্যাঁ — চিরতরে |
🔷 git restore — Working Directory ও Staging Area ঠিক করা
🔷 git revert — নিরাপদভাবে Commit বাতিল
git revert হলো সবচেয়ে নিরাপদ "undo" পদ্ধতি।
এটি পুরনো commit মুছে না, বরং সেটার বিপরীত একটি নতুন commit তৈরি করে।
Public/shared branch-এ সবসময় git revert ব্যবহার করো।
🔷 git reset — History পরিবর্তন (সাবধানে)
git reset commit history পরিবর্তন করে। তিনটি mode আছে:
Push করার পরে
git reset করো না!
GitHub-এ push করা commit reset করলে অন্যদের কাজ নষ্ট হতে পারে এবং force push দরকার পড়বে।
Push হয়ে গেলে সবসময় git revert ব্যবহার করো।
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🙈 .gitignore — অপ্রয়োজনীয় ফাইল বাদ দাও
কিছু ফাইল কখনো Git-এ রাখা উচিত নয় — password, auto-generated files, editor settings। .gitignore এই কাজ করে।
🔷 .gitignore কেন দরকার?
| ফাইলের ধরন | উদাহরণ | কেন ignore করবে |
|---|---|---|
| গোপন তথ্য | .env, .env.local |
Password, API key — অন্যরা দেখলে বিপদ |
| Dependencies | node_modules/, vendor/ |
৫০,০০০+ ফাইল, npm install দিলেই হয় |
| Build output | dist/, build/, .next/ |
Source থেকে পুনরায় তৈরি করা যায় |
| OS ফাইল | .DS_Store, Thumbs.db |
অন্য OS-এর লোকের দরকার নেই |
| Editor/IDE ফাইল | .vscode/, .idea/ |
ব্যক্তিগত settings, team-এর নয় |
| Log ফাইল | *.log, npm-debug.log |
Runtime-এ তৈরি হয়, প্রতিবার আলাদা |
| Cache | .cache/, *.pyc |
Temporary ফাইল |
🔷 .gitignore-এর Pattern নিয়ম
Web Project-এর জন্য সম্পূর্ণ .gitignore
Already Tracked ফাইল Ignore করা
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🌿 Branching Basics — Branch তৈরি, Switch, Rename, Delete
Branch হলো Git-এর সবচেয়ে শক্তিশালী feature। এটা সঠিকভাবে শিখলে টিমওয়ার্ক অনেক সহজ হয়ে যায়।
🔷 Branch-এর মূল কমান্ড
→
feature/search-bar — নতুন feature→
fix/login-redirect-bug — bug fix→
hotfix/payment-500-error — জরুরি production fix→
release/v2.1.0 — release preparation→
chore/update-dependencies — maintenance কাজ→ সবসময় lowercase ও hyphen (-) ব্যবহার করো, space নয়
🔷 Branch-এর সম্পূর্ণ Lifecycle
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🔀 Merging Basics — Branch একত্রিত করা
Feature তৈরি শেষ হলে main-এ যোগ করার সময়। Merge বোঝা মানে Git-এর সবচেয়ে গুরুত্বপূর্ণ অংশ বোঝা।
🔷 Merge করার পদ্ধতি
Fast-Forward vs No-Fast-Forward
| Merge পদ্ধতি | History | কখন ব্যবহার |
|---|---|---|
| Fast-Forward | Linear — simple ও clean | ছোট, একা কাজ, personal project |
| No-Fast-Forward (--no-ff) | Merge commit — feature-এর context রাখে | দলগত কাজ, feature branch workflow |
| Squash | সব commit একটিতে — cleanest | PR merge, ছোট fix commit-এর দল |
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
⚔️ Merge Conflict — কারণ, সমাধান ও প্রতিরোধ
Conflict দেখে ভয় পেও না। এটি সমাধানযোগ্য এবং সমাধান জানা একজন দক্ষ Developer-এর চিহ্ন।
🔷 Conflict কেন হয়?
যখন দুটো branch-এ একই ফাইলের একই স্থানে ভিন্ন পরিবর্তন হয়, Git নিজে সিদ্ধান্ত নিতে পারে না কোনটা রাখবে। তখন সে "Conflict" চিহ্নিত করে এবং তোমাকে সিদ্ধান্ত নিতে বলে।
🔷 Conflict সমাধানের ধাপ
🔷 Conflict প্রতিরোধের উপায়
| পদ্ধতি | বিবরণ |
|---|---|
| প্রতিদিন pull করো | কাজ শুরুর আগে git pull করলে conflict কমে |
| ছোট PR | বড় feature ভেঙে ছোট PR করলে conflict কম হয় |
| কথা বলো | কে কোন ফাইলে কাজ করছে জানিয়ে রাখো |
| Branch আপ-টু-ডেট রাখো | নিয়মিত main থেকে merge বা rebase করো |
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🐙 GitHub Essentials — Account, Interface ও SSH Setup
GitHub হলো বিশ্বের সবচেয়ে বড় code hosting platform। ৩ কোটি+ ডেভেলপার এখানে কাজ করে।
🔷 GitHub Account ও Profile Setup
Account তৈরির পর অবশ্যই করবে
| কাজ | কোথায় | গুরুত্ব |
|---|---|---|
| Profile picture দাও | Settings → Profile | ⭐⭐⭐ |
| Bio লেখো (সংক্ষেপে) | Settings → Profile | ⭐⭐⭐ |
| SSH Key যোগ করো | Settings → SSH Keys | ⭐⭐⭐ (অবশ্যই) |
| Profile README তৈরি করো | username/username repo | ⭐⭐⭐ (Portfolio-র জন্য) |
| 2FA চালু করো | Settings → Password and auth | ⭐⭐⭐ (নিরাপত্তা) |
SSH Key Setup — একবারই করতে হয়
Private vs Public Repository
| বিষয় | Public | Private |
|---|---|---|
| দেখা যায় | সবাই | শুধু তুমি + invited |
| Open Source | ✅ | ❌ |
| Portfolio | ✅ ভালো | ❌ |
| Client কাজ | ❌ বিপজ্জনক | ✅ |
| Personal কোড | তোমার পছন্দ | ✅ নিরাপদ |
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🌐 Git Remotes — Push, Pull এবং Fetch
Remote হলো তোমার local repository-র "ক্লাউড মিরর"। Push করলে সেখানে যায়, Pull করলে সেখান থেকে আসে।
🔷 Remote Managing — যোগ, দেখা, মুছা
একাধিক Remote — Fork করা project-এ
🔷 git push — Remote-এ পাঠানো
force push করলে অন্যদের commit history ধ্বংস হতে পারে। যদি করতেই হয়,
--force-with-lease ব্যবহার করো — এটি
অন্য কেউ push করলে সেটা আগে দেখে।
🔷 git pull ও git fetch — Remote থেকে আনা
| কমান্ড | কী করে | কখন ব্যবহার |
|---|---|---|
git fetch |
Remote-এর পরিবর্তন download করে, কিন্তু merge করে না | দেখতে চাও কী এলো, সাথে সাথে merge নয় |
git pull |
git fetch + git merge |
সহকর্মীর কাজ নামাও ও মিলিয়ে নাও |
git pull --rebase |
git fetch + git rebase |
Clean linear history চাইলে |
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🔄 প্রতিদিনের Workflow — VS Code থেকে GitHub পর্যন্ত
এটাই সবচেয়ে গুরুত্বপূর্ণ সেকশন। প্রতিদিন ঠিক এভাবেই কাজ হয়।
🔷 মূল ৫টি কমান্ড — প্রতিদিন ব্যবহৃত
সম্পূর্ণ দৈনিক Workflow
🔷 VS Code-এ ফাইল পরিবর্তন করার পর GitHub Update করা
ধরো তুমি VS Code-এ index.html পরিবর্তন করেছো এবং GitHub-এ দেখাতে চাও। এই ৪টি ধাপ মনে রাখলেই হলো:
🔷 Push Reject হলে কী করবে?
এটি খুব সাধারণ ঘটনা। সহকর্মী আগেই push করেছে এবং তুমি সেই কোড নামাওনি।
VS Code-এর বামে গিয়ার আইকনের নিচে "Source Control" (Ctrl+Shift+G) আছে। এখান থেকে git add, commit, push — সব graphically করা যায়। Command line ও GUI দুটোই ব্যবহার করতে শেখো।
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🤝 Forking vs Cloning — Open Source Contribution
🔷 Fork কী এবং Clone থেকে কীভাবে আলাদা?
| বিষয় | Clone | Fork |
|---|---|---|
| কোথায় হয় | তোমার computer-এ | তোমার GitHub account-এ |
| Original repo-র সাথে সম্পর্ক | linked (push করতে permission লাগে) | independent copy |
| কখন ব্যবহার | নিজের বা team-এর repo | অন্যের project-এ contribute করতে |
| PR দেওয়া যায় | সরাসরি | fork → original-এ cross-repo PR |
Open Source Contribution — Fork Workflow
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🔁 Pull Requests — তৈরি, Review ও Merge
Pull Request (PR) হলো আধুনিক collaborative development-এর মূল পদ্ধতি। সরাসরি main-এ merge না করে PR দিলে quality নিশ্চিত হয়।
🔷 Pull Request কী এবং কেন দরকার?
Pull Request মানে — "আমার feature branch-এর পরিবর্তনগুলো main-এ নিয়ে নাও" এই formal অনুরোধ। এটি দিলে টিম সদস্যরা কোড review করতে পারে, test করতে পারে এবং approve-এর পরেই merge হয়।
PR তৈরির সম্পূর্ণ ধাপ
ভালো PR Description Template
🔷 PR Review Process
| Review Action | অর্থ ও কখন |
|---|---|
| Comment | Approve/reject ছাড়া মন্তব্য। প্রশ্ন করা বা suggestion-এর জন্য। |
| Approve ✅ | কোড ঠিক আছে, merge করতে পারো। সাধারণত ১-২ approval লাগে। |
| Request changes ❌ | পরিবর্তন দরকার। এটা না হওয়া পর্যন্ত merge blocked। |
PR Review করার সময় কী দেখবে
🔷 PR Labels, Mentions, Reactions
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
👁️ Code Reviews ও Contribution Guidelines
🔷 ভালো Code Review-এর সংস্কৃতি
| করবে ✅ | করবে না ❌ |
|---|---|
| Code সমালোচনা করো, ব্যক্তি নয় | "তুমি কেন এভাবে লিখলে?" — ব্যক্তি আক্রমণ |
| প্রশ্ন করো: "এখানে X এর কারণ কী?" | "এটা ভুল।" — কারণ না বলে reject করা |
| Suggestion দাও: "হয়তো এভাবে করা যায়..." | সব ছোট জিনিসে "Request changes" দেওয়া |
| ভালো কাজের প্রশংসা করো | শুধু সমস্যাই বলো |
| PR ছোট রাখো (২০০ লাইনের কম) | এক PR-এ ১০০০ লাইন বা multiple features |
| Context দাও কেন এই পরিবর্তন | Description ছাড়া PR submit করা |
CONTRIBUTING.md ফাইল
বড় প্রজেক্টে একটি CONTRIBUTING.md ফাইল রাখা ভালো অভ্যাস।
নতুন contributor কীভাবে কাজ করবে তার নির্দেশনা থাকে এখানে।
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
⚡ Merge Strategies — Fast-Forward, Rebase Squash, Cherry Pick
🔷 Cherry Pick — নির্দিষ্ট Commit নেওয়া
পুরো branch merge না করে শুধু একটি বা কয়েকটি commit অন্য branch-এ নেওয়া।
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
⭐ Best Practices — পেশাদার Git ব্যবহারের অভ্যাস
ভালো Git অভ্যাস তোমার এবং পুরো টিমের জীবন সহজ করে।
🔷 Commit Best Practices
| নিয়ম | কেন |
|---|---|
| ছোট ছোট commit করো | Revert ও review সহজ হয়, bug খুঁজে পাওয়া সহজ |
| এক commit-এ এক কাজ | "feat: search" এবং "fix: navbar" — দুটো আলাদা commit করো |
| অর্থবহ message | ৬ মাস পরে দেখলে বুঝতে পারবে কী হয়েছিল |
| Commit করার আগে diff দেখো | git diff --staged — কী যাচ্ছে review করো |
| Debug code commit করো না | console.log, temporary test code বাদ দিয়ে commit করো |
🔷 Branch Best Practices
🔷 Troubleshooting Common Problems
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
📦 Git Stash — অসম্পূর্ণ কাজ সরিয়ে রাখা
কাজের মাঝে জরুরি কিছু করতে হলে Stash একটা lifesaver।
🔷 Stash কেন দরকার?
তুমি login form-এর কাজ অর্ধেক করেছো। হঠাৎ ফোন — "Production-এ payment crash করছে! এখনই ঠিক করো!"
সমস্যা: অর্ধেক কাজ commit করার মতো অবস্থায় নেই।
সমাধান:
git stash করো → main-এ যাও → hotfix করো → ফিরে আসো → git stash pop!
সম্পূর্ণ Stash Workflow
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🕰️ History — Linear, Non-Linear, HEAD ও Detached HEAD
🔷 HEAD কী?
HEAD হলো একটি pointer যা সবসময় নির্দেশ করে তুমি এখন কোন commit-এ আছো। সাধারণত HEAD একটি branch-এর শেষ commit-এ থাকে।
Detached HEAD — বিপদজনক অবস্থা
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🔄 Revert ও Reset — বিস্তারিত তুলনা
🔷 git reset-এর তিনটি Mode বিস্তারিত
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
📐 Rebase — History পুনর্গঠন
Rebase হলো Git-এর সবচেয়ে শক্তিশালী ও complex feature। সঠিকভাবে ব্যবহার করলে history অনেক clean হয়।
🔷 Rebase vs Merge — পার্থক্য
🔷 Interactive Rebase — History পরিষ্কার করা
কাজ করার সময় অনেক ছোট commit হয়। PR দেওয়ার আগে সেগুলো পরিষ্কার করতে Interactive Rebase দারুণ।
Public/shared branch-এ কখনো rebase করো না।
main, develop, বা যেকোনো branch যা অন্যরা use করে — সেখানে rebase করলে
অন্যদের history পরিবর্তন হয়ে যায় এবং বড় সমস্যা হয়।শুধু তোমার নিজের local/private branch-এ rebase করো।
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🏷️ Tagging ও GitHub Releases — Version চিহ্নিত করা
Software version release করার সময় Tag দিয়ে সেই commit চিরতরে চিহ্নিত করো।
🔷 Tag কী এবং কেন দরকার?
Tag হলো একটি নির্দিষ্ট commit-এর উপরে দেওয়া permanent label। Branch-এর মতো সরে যায় না।
Software release করার সময় v1.0.0, v2.1.3 এভাবে tag দেওয়া হয়।
| Tag ধরন | বৈশিষ্ট্য | কখন ব্যবহার |
|---|---|---|
| Lightweight Tag | শুধু commit hash-এর alias, কোনো metadata নেই | private, temporary marking |
| Annotated Tag | Full object — tagger, date, message আছে | public release-এর জন্য সঠিক |
Semantic Versioning (SemVer) — নিয়ম মেনে Version
GitHub Releases
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🪝 Git Hooks — Automated Scripts
Git Hooks দিয়ে commit, push ইত্যাদি ঘটনার সময় স্বয়ংক্রিয়ভাবে script চালানো যায়।
🔷 Git Hooks কী এবং কেন?
Git Hooks হলো automatic scripts যা নির্দিষ্ট Git ঘটনার আগে বা পরে চলে। এই দিয়ে quality control enforce করা যায় — যেমন commit-এর আগে lint check, push-এর আগে tests চালানো।
| Hook নাম | কখন চলে | সাধারণ ব্যবহার |
|---|---|---|
pre-commit |
commit শুরু হওয়ার আগে | Lint check, code formatting, secret detection |
commit-msg |
Commit message লেখার পরে | Commit message format যাচাই (conventional commits) |
pre-push |
Push-এর আগে | Tests run করা, build যাচাই |
post-checkout |
checkout-এর পরে | Dependencies install notify করা |
post-update |
Server-এ push-এর পরে (server-side) | Notification পাঠানো, CI trigger করা |
Husky — Node.js Projects-এ সহজ Hook Management
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
⚡ GitHub Actions — CI/CD Automation
GitHub Actions দিয়ে code push হলে স্বয়ংক্রিয়ভাবে test, build ও deploy করা যায়।
🔷 GitHub Actions কী?
GitHub Actions হলো GitHub-এর built-in CI/CD (Continuous Integration / Continuous Deployment) platform। তুমি YAML ফাইলে define করো কখন কী করবে — push হলে, PR দিলে, বা schedule-এ।
| উপাদান | বিবরণ |
|---|---|
| Workflow | একটি YAML ফাইল যেখানে সব কিছু define করা আছে |
| Trigger (on:) | কখন workflow চলবে — push, PR, schedule, manual |
| Job | Workflow-এর একটি অংশ যা Runner-এ চলে |
| Step | Job-এর প্রতিটি ধাপ |
| Action | Reusable script বা GitHub Marketplace থেকে |
| Runner | যে machine-এ workflow চলে (ubuntu, windows, mac) |
🔷 YAML Syntax — Workflow লেখার নিয়ম
Workflow Triggers বিস্তারিত
Secrets ও Environment Variables
Caching — Speed বাড়াও
GitHub Pages Deploy করা
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🚀 Advanced Git Topics
এখানে আরো কিছু গুরুত্বপূর্ণ advanced topic — Git Submodules, Git LFS, Bisect, Reflog ইত্যাদি।
🔷 Git Submodules — Repository-র ভিতরে Repository
বড় project-এ কখনো অন্য Git repository কে "sub-project" হিসেবে যোগ করতে হয়। উদাহরণ: তোমার main project-এ একটি shared UI library যোগ করা।
🔷 Git Bisect — Bug কোন Commit-এ এলো?
হাজার commit-এর মধ্যে কোনটিতে bug এলো তা binary search-এর মাধ্যমে খুঁজে বের করা।
🔷 Git LFS — বড় ফাইল Handle করা
Git সাধারণত text file-এর জন্য তৈরি। বড় binary file (PSD, video, database dump) commit করলে repository অনেক বড় হয়ে যায়। Git LFS (Large File Storage) এই সমস্যা সমাধান করে।
🔷 GitHub Workflow ও CLI
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
📝 Markdown ও Documentation
GitHub-এ ভালো documentation লেখা একজন পেশাদার ডেভেলপারের অন্যতম গুরুত্বপূর্ণ দক্ষতা।
🔷 Markdown কী এবং কেন শিখবে?
Markdown হলো একটি lightweight markup language যা plain text-কে সুন্দর formatted document-এ রূপান্তরিত করে। GitHub-এ README, Issues, PR, Wiki — সব জায়গায় Markdown ব্যবহার হয়।
🔷 Project README — ভালো README কীভাবে লিখবে?
একটি ভালো README হলো তোমার project-এর "মুখপাত্র"। নতুন কেউ project দেখলেই বুঝতে পারবে এটা কী।
Project-এর নাম ও এক লাইনের বিবরণ → Installation guide → Usage example → Contributing guide → License
🔷 GitHub Wikis
Wiki হলো project-এর বিস্তারিত documentation-এর জন্য। README-তে সব লেখা সম্ভব না — সেক্ষেত্রে Wiki ব্যবহার করো।
README → project-এর সংক্ষিপ্ত পরিচয়, installation, basic usage
Wiki → বিস্তারিত API docs, architecture, tutorials, FAQ
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🏢 GitHub Organizations ও Projects
Team-এ কাজ করতে হলে GitHub Organizations ও Projects ব্যবহার করতে শেখা অপরিহার্য।
🔷 GitHub Organizations কী?
Organization হলো একটি shared account যেখানে একাধিক ডেভেলপার একসাথে কাজ করতে পারে। Company বা open source project-এ সাধারণত Organization ব্যবহার হয়।
Read: শুধু দেখতে পারবে
Triage: Issues ও PR manage করতে পারবে
Write: Push করতে পারবে
Maintain: Repository settings manage করতে পারবে
Admin: সম্পূর্ণ access
🔷 GitHub Projects — Kanban Board
GitHub Projects হলো built-in project management tool। Issues ও PR-কে Kanban board বা Table view-তে সাজিয়ে track করা যায়।
Issues, PR, ও custom tasks একসাথে track করা যায়। Custom fields যোগ করা যায় (Priority, Sprint, Estimate)। Roadmap view-তে deadline ও milestone দেখা যায়।
🔷 GitHub Discussions
Discussions হলো community conversation-এর জায়গা। Issues-এ bug ও feature request থাকে, আর Discussions-এ প্রশ্ন, আলোচনা, announcement থাকে।
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
✨ GitHub Gists, Packages ও Sponsors
GitHub-এর আরো কিছু দরকারি feature যা ডেভেলপারদের কাজে আসে।
🔷 GitHub Gists — কোড Snippet শেয়ার করো
Gist হলো ছোট ছোট code snippet বা note শেয়ার করার জন্য। পুরো repository না বানিয়ে একটা ফাইল বা কয়েক লাইন কোড শেয়ার করতে চাইলে Gist ব্যবহার করো।
Config files শেয়ার করতে → dotfiles, .bashrc, settings.json
Quick script শেয়ার করতে → automation, utility functions
Notes বা cheatsheet রাখতে → Markdown Gist
🔷 GitHub Packages — Package Registry
GitHub Packages হলো software package publish ও consume করার জায়গা। npm, Docker, Maven, NuGet — সব ধরনের package publish করা যায়।
🔷 GitHub Sponsors — Open Source সাপোর্ট করো
GitHub Sponsors দিয়ে তুমি পছন্দের open source developer বা project-কে আর্থিক সহায়তা করতে পারো। নিজেও Sponsor হওয়ার যোগ্যতা অর্জন করতে পারো।
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
☁️ GitHub Codespaces ও Education
Cloud-এ code করো এবং student হিসেবে বিশেষ সুবিধা উপভোগ করো।
🔷 GitHub Codespaces — Browser-এ VS Code
Codespaces হলো cloud-based development environment। Local computer-এ কিছু install না করেই browser থেকে VS Code-এর মতো environment পাবে।
নতুন computer-এ setup ছাড়াই কাজ শুরু করতে → Interview coding test-এ → অন্যের machine থেকে নিজের project-এ কাজ করতে → Slow computer থেকে heavy project run করতে
🔷 GitHub Education — Student Developer Pack
Student হলে GitHub Education থেকে বিনামূল্যে অনেক paid tool পাওয়া যায়।
শিক্ষকরা GitHub Classroom দিয়ে programming assignment দিতে পারেন। প্রতিটি student-এর জন্য automatically repository তৈরি হয়, submission track করা যায়।
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🔒 GitHub Security ও Copilot
কোডকে নিরাপদ রাখো এবং AI দিয়ে দ্রুত কোড লেখো।
🔷 GitHub Security
GitHub-এ repository-র security নিশ্চিত করার বেশ কিছু built-in tool আছে।
Dependabot — Dependency আপডেট রাখো
Secret Scanning — Leaked Secret ধরো
API keys, passwords, database URLs, private keys (.pem), AWS/GCP credentials → এগুলো সবসময় .env ফাইলে রাখো এবং .gitignore-এ যোগ করো।
Code Scanning — Vulnerability খোঁজো
🔷 GitHub Copilot — AI Code Assistant
GitHub Copilot হলো AI-powered code completion tool। তুমি comment লিখলে বা কোড শুরু করলে Copilot পরের অংশ suggest করে।
GitHub Models দিয়ে সরাসরি GitHub-এ বিভিন্ন AI model (GPT-4o, Claude, Llama) try করা যায়। → github.com/marketplace/models → Model select → Playground-এ test করো
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
⚙️ GitHub API ও Developer Tools
GitHub-কে programmatically control করো — automation, integration, আর custom app তৈরি করো।
🔷 GitHub REST API
GitHub REST API দিয়ে repositories, issues, pull requests, users — সব কিছু programmatically access করা যায়।
🔷 GitHub GraphQL API
REST API-তে একসাথে অনেক request করতে হয়। GraphQL API দিয়ে একটি request-এ ঠিক যা দরকার তাই নিয়ে আসা যায়।
🔷 GitHub Apps ও Webhooks
GitHub Apps ও OAuth Apps তৈরি করে third-party integration বানানো যায়। Webhooks দিয়ে GitHub event-এ automatic action trigger করা যায়।
Webhooks
GitHub Apps তৈরি
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🛠️ Git Patch, Worktree ও Attributes
Git-এর কিছু কম পরিচিত কিন্তু কাজের advanced feature।
🔷 Git Patch — Email বা File দিয়ে Changes শেয়ার করো
Git Patch দিয়ে changes-কে একটি ফাইলে রপ্তানি করা যায় এবং অন্য repository-তে apply করা যায়। GitHub access ছাড়া changes শেয়ার করার পুরনো কিন্তু কার্যকর পদ্ধতি।
🔷 Git Worktree — একসাথে একাধিক Branch-এ কাজ করো
সাধারণত একটি repository-তে একবারে একটাই branch checkout করা যায়। Git Worktree দিয়ে একই repository-র একাধিক branch আলাদা folder-এ একসাথে open রাখা যায়।
Feature develop করতে করতে hotfix লাগলে → stash না করে আলাদা folder-এ fix করো। দুটো version একসাথে compare করতে হলে → দুটো folder পাশাপাশি খোলো।
🔷 Git Attributes — ফাইল-ভিত্তিক নিয়ম
.gitattributes ফাইলে নির্দিষ্ট ফাইল বা ফাইল-type-এর জন্য বিশেষ নিয়ম সেট করা যায়।
Team-এ Windows ও Mac ডেভেলপার একসাথে কাজ করলে line ending conflict হয়।
* text=auto দিলে
Git automatically normalize করে।
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
🌐 Repo Hosting Services
Git শুধু একটি tool — কোড online-এ রাখতে ও team-এ কাজ করতে দরকার একটি Hosting Service। চলো দেখি কোনটা কখন ব্যবহার করবে।
🔷 Hosting Services তুলনা — এক নজরে
| Feature | GitHub | GitLab | Bitbucket | Azure DevOps | Gitea |
|---|---|---|---|---|---|
| মালিক | Microsoft | GitLab Inc. | Atlassian | Microsoft | Community (OSS) |
| Free Plan | ✅ উদার | ✅ উদার | ✅ সীমিত | ✅ সীমিত | ✅ সম্পূর্ণ বিনামূল্যে |
| Self-hosting | ❌ (Enterprise only) | ✅ GitLab CE | ✅ Data Center | ✅ Azure Server | ✅ সহজ |
| CI/CD | GitHub Actions | GitLab CI (built-in) | Bitbucket Pipelines | Azure Pipelines | Gitea Actions |
| Issue Tracking | ✅ | ✅ উন্নত | ✅ Jira integration | ✅ Azure Boards | ✅ Basic |
| Open Source Community | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐⭐ |
| কে বেশি ব্যবহার করে | সবাই | Enterprise, DevOps team | Atlassian ecosystem | Microsoft / .NET team | Private server চাইলে |
🔷 GitHub — সবচেয়ে জনপ্রিয়
GitHub হলো বিশ্বের সবচেয়ে বড় code hosting platform। ৯০%+ open source project এখানে থাকে। নতুন ডেভেলপার থেকে শুরু করে Google, Microsoft, Meta — সবাই GitHub ব্যবহার করে।
কেন GitHub বেছে নেবে?
শুরু করো
Open source project করতে চাইলে → Open source community-তে contribute করতে চাইলে → Portfolio বানাতে চাইলে → যেকোনো personal বা team project-এ
🔷 GitLab — DevOps-এর সব কিছু এক জায়গায়
GitLab হলো একটি complete DevOps platform। শুধু code hosting না — planning থেকে শুরু করে deployment পর্যন্ত সব কিছু GitLab-এ করা যায়। এটি নিজেই open source।
GitLab-এর বিশেষ সুবিধা
GitLab CI/CD — উদাহরণ
নিজের server-এ host করতে চাইলে → Complete DevOps pipeline দরকার হলে → Enterprise team-এ কাজ করলে → GitHub-এর বিকল্প চাইলে
🔷 Bitbucket — Atlassian Ecosystem-এর জন্য
Bitbucket হলো Atlassian-এর product। যদি তোমার team Jira বা Confluence ব্যবহার করে, তাহলে Bitbucket স্বাভাবিকভাবেই মানানসই।
Bitbucket-এর বিশেষ সুবিধা
Bitbucket Pipelines — উদাহরণ
Team ইতোমধ্যে Jira ব্যবহার করলে → Atlassian ecosystem-এ থাকলে → ছোট private team-এ কাজ করলে
🔷 Azure DevOps — Microsoft Ecosystem-এর জন্য
Azure DevOps হলো Microsoft-এর complete DevOps suite। Azure Repos হলো এর Git hosting অংশ। .NET, C#, বা Microsoft technology stack ব্যবহার করলে এটি সবচেয়ে ভালো মানায়।
Azure DevOps-এর বিশেষ সুবিধা
Azure Pipelines — উদাহরণ
Microsoft / Azure cloud ব্যবহার করলে → .NET বা C# project-এ → Enterprise corporate environment-এ → Azure services-এর সাথে tight integration দরকার হলে
🔷 Gitea — নিজের Server-এ Git
Gitea হলো lightweight, self-hosted Git service। মাত্র একটি binary file — Raspberry Pi-তেও চলে! Internet connection ছাড়া বা সম্পূর্ণ private environment-এ Git hosting দরকার হলে Gitea সেরা।
Gitea-র বিশেষ সুবিধা
Docker দিয়ে Gitea চালাও
Binary দিয়ে Install (Linux)
নিজের server-এ সম্পূর্ণ control চাইলে → Offline / air-gapped environment-এ → Company data বাইরে যাবে না এই নিশ্চয়তা দরকার হলে → কম resource-এ Git server চালাতে চাইলে
🔷 কোনটা বেছে নেবে? — সিদ্ধান্ত গাইড
| তুমি যদি... | তাহলে ব্যবহার করো |
|---|---|
| নতুন ডেভেলপার বা student | ✅ GitHub |
| Open source project করতে চাও | ✅ GitHub |
| Portfolio বানাতে চাও | ✅ GitHub |
| Complete DevOps pipeline + self-hosting চাও | ✅ GitLab |
| Team ইতোমধ্যে Jira ব্যবহার করে | ✅ Bitbucket |
| Microsoft / Azure / .NET stack | ✅ Azure DevOps |
| নিজের private server চাও | ✅ Gitea |
| সব কিছু নিজের control-এ রাখতে চাও | ✅ Gitea বা GitLab CE |
সব service-ই Git ব্যবহার করে — তাই Git শিখলে যেকোনো platform-এ কাজ করতে পারবে। Hosting service শুধু Git-এর উপরে extra features যোগ করে। নতুন হলে GitHub দিয়ে শুরু করো।
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!
📋 Complete Command Reference
কাজের সময় চট করে দেখার জন্য সব গুরুত্বপূর্ণ কমান্ড এক জায়গায়।
🔷 Setup ও Config
| কমান্ড | কাজ |
|---|---|
git --version |
Git version দেখো |
git config --global user.name "নাম" |
Global নাম set |
git config --global user.email "email" |
Global email set |
git config --list |
সব config দেখো |
git config --global init.defaultBranch main |
Default branch main |
git config --global core.editor "code --wait" |
VS Code editor set |
git config --global alias.lg "log --oneline --graph --all" |
Alias তৈরি |
🔷 Repository তৈরি
| কমান্ড | কাজ |
|---|---|
git init |
নতুন repo init |
git init my-project |
ফোল্ডার সহ init |
git clone <url> |
Remote repo clone |
git clone --depth=1 <url> |
Shallow clone |
git clone --branch develop <url> |
নির্দিষ্ট branch |
🔷 Stage ও Commit
| কমান্ড | কাজ |
|---|---|
git status |
বর্তমান অবস্থা |
git status -s |
সংক্ষিপ্ত অবস্থা |
git add <file> |
নির্দিষ্ট ফাইল stage |
git add . |
সব stage করো |
git add -p |
Interactive patch staging |
git commit -m "msg" |
Commit করো |
git commit -am "msg" |
Stage + commit (tracked files) |
git commit --amend -m "new msg" |
শেষ commit-এর message ঠিক করো |
git diff |
Unstaged পরিবর্তন |
git diff --staged |
Staged পরিবর্তন |
git diff HEAD |
সব পরিবর্তন last commit থেকে |
git diff main feature |
দুই branch-এর পার্থক্য |
🔷 History
| কমান্ড | কাজ |
|---|---|
git log |
Commit history |
git log --oneline |
সংক্ষিপ্ত log |
git log --oneline --graph --all |
Branch tree দেখো |
git log -5 |
শেষ ৫টি |
git log --author="Farid" |
নির্দিষ্ট ব্যক্তির |
git log --grep="navbar" |
Message-এ keyword |
git log -- file.css |
ফাইলের history |
git show HEAD |
শেষ commit বিস্তারিত |
git show a1b2c3d |
নির্দিষ্ট commit |
git blame file.css |
কে কোন লাইন লিখেছে |
git reflog |
সব HEAD পরিবর্তন (life-saver!) |
🔷 Branch
| কমান্ড | কাজ |
|---|---|
git branch |
সব local branch |
git branch -a |
সব branch (remote সহ) |
git branch -v |
Branch + শেষ commit |
git checkout -b <name> |
Branch তৈরি + switch |
git switch -c <name> |
একই (modern) |
git switch main |
main-এ ফিরে যাও |
git switch - |
আগের branch-এ যাও |
git branch -m new-name |
Current branch rename |
git branch -d <name> |
Merge হওয়া branch মুছো |
git branch -D <name> |
Force delete |
git merge <branch> |
Merge করো |
git merge --no-ff <branch> |
Merge commit সহ |
git merge --abort |
Merge বাতিল |
git rebase main |
main-এর উপরে rebase |
git rebase -i HEAD~3 |
Interactive rebase |
🔷 Undo
| কমান্ড | কাজ | নিরাপদ? |
|---|---|---|
git restore <file> |
Unstaged পরিবর্তন বাতিল | ⚠️ মুছে যায় |
git restore --staged <file> |
Unstage করো | ✅ |
git revert HEAD |
শেষ commit নিরাপদে বাতিল | ✅ সবচেয়ে নিরাপদ |
git reset --soft HEAD~1 |
Commit বাতিল, staged রাখো | ✅ |
git reset HEAD~1 |
Commit বাতিল, unstaged | ⚠️ |
git reset --hard HEAD~1 |
Commit + পরিবর্তন মুছো | ❌ |
git cherry-pick <hash> |
নির্দিষ্ট commit অন্য branch-এ | ✅ |
🔷 Remote
| কমান্ড | কাজ |
|---|---|
git remote -v |
সব remote দেখো |
git remote add origin <url> |
Remote যোগ করো |
git remote set-url origin <url> |
URL পরিবর্তন করো |
git push -u origin main |
প্রথমবার push + tracking |
git push |
Current branch push |
git push --tags |
সব tag push |
git push origin --delete <branch> |
Remote branch মুছো |
git pull |
Fetch + merge |
git pull --rebase |
Fetch + rebase |
git fetch |
শুধু download, merge নয় |
git fetch --prune |
Deleted remote branch সরাও |
🔷 Stash ও Tags
| কমান্ড | কাজ |
|---|---|
git stash |
কাজ সরিয়ে রাখো |
git stash save "message" |
নাম দিয়ে stash |
git stash list |
সব stash দেখো |
git stash pop |
সর্বশেষ stash ফিরিয়ে আনো + মুছো |
git stash apply stash@{1} |
নির্দিষ্ট stash আনো |
git stash clear |
সব stash মুছো |
git tag -a v1.0.0 -m "msg" |
Annotated tag |
git tag |
সব tag দেখো |
git push --tags |
সব tag push |
git tag -d v1.0.0 |
Local tag মুছো |
🔷 Git Patch ও Worktree
| কমান্ড | কাজ |
|---|---|
git format-patch -1 HEAD |
শেষ commit-এর patch তৈরি |
git format-patch -3 HEAD |
শেষ ৩টি commit-এর patch |
git apply <file.patch> |
Patch apply করো |
git apply --check <file.patch> |
Patch preview (apply ছাড়া) |
git am <file.patch> |
Commit সহ patch apply |
git worktree add <path> <branch> |
নতুন worktree তৈরি |
git worktree list |
সব worktree দেখো |
git worktree remove <path> |
Worktree সরাও |
git worktree prune |
Deleted worktree cleanup |
🔷 GitHub CLI (gh)
| কমান্ড | কাজ |
|---|---|
gh auth login |
GitHub-এ login |
gh repo create <name> --public |
নতুন repo তৈরি |
gh repo clone <user/repo> |
Repo clone |
gh repo list |
তোমার সব repo |
gh issue list |
সব issue দেখো |
gh issue create --title "..." --body "..." |
নতুন issue তৈরি |
gh issue close <number> |
Issue বন্ধ করো |
gh pr create --title "..." --body "..." |
নতুন PR তৈরি |
gh pr list |
সব PR দেখো |
gh pr merge <number> --squash |
PR merge করো |
gh run list |
GitHub Actions run দেখো |
gh gist create <file> --public |
Gist তৈরি |
gh gist list |
সব gist দেখো |
🔷 GitHub REST API (curl)
| Endpoint | কাজ |
|---|---|
GET /user/repos |
নিজের সব repo |
GET /repos/:owner/:repo |
Repo বিস্তারিত |
POST /repos/:owner/:repo/issues |
নতুন issue তৈরি |
GET /repos/:owner/:repo/pulls |
সব PR দেখো |
POST /repos/:owner/:repo/releases |
Release তৈরি |
GET /search/repositories?q=:query |
Repo search |
🔷 .gitattributes ও অন্যান্য
| Pattern / কমান্ড | কাজ |
|---|---|
* text=auto |
Line ending auto-normalize |
*.png binary |
Binary file mark (diff বাদ) |
*.sh text eol=lf |
LF line ending force |
tests/ export-ignore |
Archive থেকে বাদ |
git lfs install |
LFS install |
git lfs track "*.psd" |
LFS-এ ফাইল type যোগ |
git lfs ls-files |
LFS-tracked ফাইল দেখো |
git bisect start |
Bisect শুরু |
git bisect bad / good |
Commit mark করো |
git bisect reset |
Bisect শেষ করো |
git submodule add <url> <path> |
Submodule যোগ |
git submodule update --remote |
Submodule আপডেট |
🔷 Repo Hosting Services
| Service | বিশেষত্ব | কখন ব্যবহার করবে |
|---|---|---|
| GitHub | সবচেয়ে বড় community, Copilot, Actions | Open source, portfolio, সব ক্ষেত্রে |
| GitLab | Built-in CI/CD, self-hosting বিনামূল্যে | DevOps pipeline, enterprise |
| Bitbucket | Jira ও Confluence integration | Atlassian ecosystem |
| Azure DevOps | Azure Pipelines, Boards, Artifacts | Microsoft / .NET / Azure stack |
| Gitea | Lightweight, একটি binary-তে চলে | Self-hosted, private server |
🔷 Hosting CLI Quick Reference
| কাজ | GitHub (gh) | GitLab (glab) |
|---|---|---|
| Login | gh auth login |
glab auth login |
| Repo তৈরি | gh repo create |
glab repo create |
| Issue তৈরি | gh issue create |
glab issue create |
| PR / MR তৈরি | gh pr create |
glab mr create |
| Pipeline দেখো | gh run list |
glab pipeline list |
মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!