The Core Loop
Essential | Estimated time: 45–60 minutes
এই module হলো Git-এর heart। এখানে যা শিখবে সেটা প্রতিদিন ব্যবহার করবে — চাকরিতে হোক, client project-এ হোক, বা নিজের project-এ।
What You’ll Learn
git init— নতুন project-এ Git শুরু করাgit clone— GitHub থেকে project নামানোgit add— কোন changes save করবে সেটা select করাgit commit— changes permanently record করাgit push— GitHub-এ upload করাgit pull— GitHub থেকে latest changes নামানোgit statusএবংgit log— কী হচ্ছে সেটা দেখা.gitignore— কোন files Git track করবে না সেটা বলা
The Big Picture
Git কীভাবে কাজ করে এটা বোঝা খুব জরুরি। কাজ শুরু করার আগে একটা mental model বুঝে নাও। Git-এ তোমার code তিনটা জায়গায় থাকে:
┌─────────────────┐ git add ┌─────────────────┐ git commit ┌─────────────────┐
│ │ ───────────────► │ │ ─────────────────► │ │
│ Working │ │ Staging Area │ │ Repository │
│ Directory │ │ (Index) │ │ (.git folder) │
│ │ ◄─────────────── │ │ │ │
│ তুমি এখানে │ git restore │ "কী save হবে" │ │ History saved │
│ কাজ করো │ │ সেটা ঠিক করো │ │ এখানে │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
│ git push
▼
┌─────────────────┐
│ │
│ GitHub │
│ (Remote) │
│ │
└─────────────────┘সহজ কথায়:
Working Directory
তুমি file edit করো
Staging Area
git add করো (save করার list-এ উঠল)
Repository
git commit করো (permanently recorded)
GitHub
git push করো (internet-এ গেল)
Part 1: Project শুরু করা
Option A: নিজে শুরু (git init)
তুমি নতুন একটা project বানাচ্ছ, GitHub-এ এখনো কিছু নেই।
# প্রথমে একটা folder বানাও
mkdir my-first-project
cd my-first-project
# এই folder-এ Git চালু করো
git initOutput:
Initialized empty Git repository in /home/you/my-first-project/.git/এই মানে .git নামে একটা hidden folder তৈরি হয়েছে। এই folder-এই Git তোমার সব history রাখে।
Pro Tip: git init শুধু একবার করতে হয় — project-এর শুরুতে। বারবার করতে হয় না।
Part 2: Daily Workflow
এই workflow তুমি প্রতিদিন follow করবে। এটি Git-এর সবচেয়ে গুরুত্বপূর্ণ অংশ।
Step 1: Status
কাজ শুরু করার আগে দেখো কী অবস্থা:
git statusনতুন repo-তে output:
On branch main
No commits yet
nothing to commit (create/copy files and start working)একটা file বানানোর পর:
# একটা file বানাও
echo "# My First Project" > README.md
# আবার status দেখো
git statusOutput:
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present“Untracked” মানে Git এই file-এর existence জানে, কিন্তু এখনো track করছে না।
Step 2: Staging (git add)
কোন changes save করতে চাও সেটা Git-কে বলো:
# একটা specific file add করো
git add README.md
# একাধিক file add করো
git add index.html style.css
# সব changes একসাথে add করো
git add .git add . সাবধানে ব্যবহার করো।
এটা সব changed files একসাথে add করে। কাজের সময় অনেকে accidentally secret files বা বড় files add করে ফেলে। .gitignore শেখার পর এটা safer হবে (দেখো Part 4)।
Add করার পর status দেখো:
git statusOutput-এ Changes to be committed: এর মানে file Staging Area-এ আছে — commit করার জন্য ready।
Step 3: Commit (git commit)
এখন permanently record করো:
git commit -m "Initial commit: add README"Output:
[main (root-commit) a1b2c3d] Initial commit: add README
1 file changed, 1 insertion(+)
create mode 100644 README.md-m flag মানে message। Quotation-এর ভেতরে তুমি লিখছ এই commit-এ কী করলে।
Good Commit Message লেখার নিয়ম
Commit message হলো তোমার কাজের diary। ৬ মাস পর তুমি বা তোমার teammate যখন history দেখবে, তখন বুঝতে পারবে কে কী করেছিল।
❌ Bad Messages
fix
update
changes
asdf
doneনিয়ম:
- Present tense লেখো (“Add” না “Added”)
- ছোট রাখো — ৫০ character-এর মধ্যে
- কী করলে সেটা বলো, কেন করলে সেটা না হলেও চলে (ছোট changes-এ)
Step 4: Push (git push)
তোমার local commit গুলো GitHub-এ পাঠাও।
Repository তৈরি
- GitHub-এ যাও → New repository
- Repository name দাও
- Private বা Public select করো
- “Add a README file” tick দিও না
- Create repository click করো
Remote add করো
Terminal-এ:
git remote add origin git@github.com:username/my-first-project.gitPush করো
git push -u origin main-u origin main মানে: “এখন থেকে git push করলেই origin-এর main branch-এ যাবে।” পরের বার থেকে শুধু git push লিলেই হবে।
Step 5: Pull (git pull)
Team-এ কাজ করলে বা অন্য machine থেকে কাজ করলে, GitHub-এ নতুন changes থাকতে পারে। সেগুলো নামাও:
git pullGood habit: কাজ শুরু করার আগে সবসময় git pull করো। এতে তুমি latest code দিয়ে কাজ শুরু করবে।
Part 3: History (git log)
তোমার সব commits দেখতে:
git logএকটু সংক্ষেপে দেখতে:
git log --onelineOutput:
e4f5g6h Add contact page
a1b2c3d Initial commit: add READMEPart 4: .gitignore
কিছু files আছে যেগুলো Git-এ রাখা উচিত না। এগুলো ignore করতে project root-এ .gitignore নামে একটা file বানাও:
- .env
- .gitignore
- README.md
File-এর ভেতরে লেখো:
# Dependencies
node_modules/
# Environment variables (NEVER commit this!)
.env
.env.local
# OS files
.DS_Storeসবচেয়ে বড় ভুল: .env file commit করে GitHub-এ push করা। এতে তোমার API keys, database passwords সব public হয়ে যায়। সবসময় .env কে .gitignore-এ রাখো।
Part 5: Full Workflow
এটাই তুমি প্রতিদিন করবে:
Pull Latest
কাজ শুরুর আগে latest pull করো git pull
Work
কাজ করো (files edit করো)
Inspect Status
কী কী change হয়েছে দেখো git status
Stage Changes
Changes stage করো git add .
Commit
Commit করো git commit -m "Add feature"
Push
GitHub-এ push করো git push
Checklist
-
git initদিয়ে নতুন project তৈরি করেছি -
git cloneদিয়ে GitHub থেকে project নামিয়েছি -
git add→git commit→git pushকরেছি - GitHub-এ গিয়ে আমার commit দেখতে পাচ্ছি
-
git log --onelineদিয়ে history দেখেছি -
.gitignorefile বানিয়েছি
Common Problems & Fixes
Push Error
error: failed to push some refs...কারণ: GitHub-এ নতুন changes আছে যেটা তোমার কাছে নেই।
Fix: git pull তারপর git push
What’s Next?
Daily workflow শেখা হয়ে গেছে। এখন শিখবে Git-এর সবচেয়ে powerful feature —
→ Branching & Merging
একই project-এ একাধিক কাজ একসাথে করা, team-এর সাথে conflict ছাড়া কাজ করা — সব এখানে।