GitHub Essentials
Essential | Estimated time: 60–90 minutes
এতক্ষণ তুমি Git শিখেছ — যেটা তোমার local machine-এ কাজ করে। এখন GitHub শিখবে — যেটা দিয়ে তোমার কাজ দুনিয়ার সাথে share হয় এবং team-এর সাথে collaborate করা যায়।
What You’ll Learn
- Git আর GitHub-এর পার্থক্য (once and for all)
git remote— local repo আর GitHub-এর connectiongit fetchvsgit pull— পার্থক্য বোঝা- GitHub UI-এর গুরুত্বপূর্ণ অংশগুলো
- Pull Request (PR) — বানানো, review করা, merge করা
- Issues — task এবং bug track করা
- Fork — অন্যের repo নিয়ে কাজ করা
Git vs GitHub — পার্থক্য কী?
এটা নিয়ে অনেক নতুনরা confused থাকে। একবারে clear করে নাও:
| Git | GitHub | |
|---|---|---|
| কী | Software (tool) | Website (platform) |
| কোথায় থাকে | তোমার computer-এ | Internet-এ |
| কাজ | Version history track করে | Code host করে, team collaboration করায় |
| Internet লাগে? | না | হ্যাঁ |
| বিকল্প আছে? | না (Git-ই standard) | হ্যাঁ — GitLab, Bitbucket |
সহজ কথায়: Git হলো engine, GitHub হলো garage। তোমার গাড়ি (code) Git দিয়ে চলে, GitHub-এ রেখে দাও যাতে সবাই দেখতে পায়।
Part 1: git remote
Remote কী?
“Remote” মানে একটা দূরের repository-র address — সাধারণত GitHub-এ।
তোমার local repo জানে কোথায় push করতে হবে, কোথা থেকে pull করতে হবে — এই information remote-এ থাকে।
Remote দেখো
git remote -vOutput:
origin git@github.com:username/my-project.git (fetch)
origin git@github.com:username/my-project.git (push)origin হলো remote-এর নাম — এটা default নাম।
Part 2: fetch vs pull
এই দুইটা নিয়ে অনেকে confused হয়। পার্থক্যটা জানা দরকার।
git fetch — দেখো কিন্তু নামাও না
git fetch originএটা GitHub থেকে নতুন changes download করে কিন্তু তোমার files-এ apply করে না। তুমি আগে দেখতে পারবে কী কী এসেছে, তারপর decide করবে।
git pull — নামাও এবং apply করো
git pullএটা আসলে দুইটা কাজ একসাথে করে:
git fetch— changes download করেgit merge— তোমার current branch-এ apply করে
কখন কোনটা?
| Situation | Command |
|---|---|
| কাজ শুরুর আগে latest নামাও | git pull |
| দেখতে চাও কী এসেছে, apply করবে কিনা ঠিক করোনি | git fetch |
| Team-এর কাজ দেখতে চাও নিজের কাজ না ভেঙে | git fetch |
Daily life-এ বেশিরভাগ সময় git pull ই ব্যবহার হয়। git fetch advanced situation-এ কাজে আসে।
Part 3: Pull Request
PR কী?
PR মানে “আমার branch-এর কাজ main-এ নিয়ে যাও” — এটা একটা formal request। Professional team-এ কেউ directly main-এ push করে না। সব কাজ PR-এর মাধ্যমে যায়।
Branch push করো
git push -u origin feature/user-profileGitHub-এ PR খোলো
GitHub-এ যাও। Push করার পর “Compare & pull request” button click করো।
PR Form পূরণ করো
Base: main ← কোথায় merge হবে
Compare: feature/user-profile ← কোনটা merge হবে
Title: Add user profile pageReviewer Assign করো
Right sidebar-এ:
- Reviewers → teammate select করো
- Assignees → নিজেকে assign করো
Create Pull Request
“Create pull request” button click করো।
PR Review করা
তোমার teammate তোমাকে review করতে বলেছে। কী করবে?
- Code দেখো: Files changed tab-এ যাও।
- Comment করো: line number-এর পাশে ”+” click করো।
- Review Submit করো: “Review changes” button-এ click করো এবং Approve বা Request changes দাও।
PR Merge করা
Approve হওয়ার পর merge করার ৩টা option:
| Option | কী করে | কখন ব্যবহার |
|---|---|---|
| Merge commit | সব commits রাখে + একটা merge commit যোগ করে | History detail রাখতে চাইলে |
| Squash and merge | সব commits একটায় মিলিয়ে দেয় | Clean history চাইলে (most popular) |
| Rebase and merge | Commits গুলো main-এর উপর রাখে | Linear history চাইলে |
Beginner হিসেবে “Squash and merge” ব্যবহার করো। History clean থাকে।
Merge করার পর GitHub বলবে “branch delete করবে?” — Delete branch click করো।
Part 4: Issues
Issue হলো GitHub-এর task management system।
Issue থেকে Branch বানাও (best practice)
Issue page-এ right sidebar-এ “Create a branch” option আছে। এটা automatically branch বানায় issue number সহ: 1-login-button-not-working। এতে branch এবং issue automatically linked থাকে।
Commit-এ Issue Reference করো
git commit -m "Fix login button on Safari — closes #1"closes #1 লিখলে PR merge হওয়ার সাথে সাথে Issue automatically close হয়ে যাবে।
Part 5: Fork
Fork কী?
Fork মানে অন্যের repository-র একটা copy তোমার GitHub account-এ নেওয়া।
Fork করো
GitHub-এ repository-তে যাও → উপরে Fork button → Create fork
Fork clone করো
git clone git@github.com:তোমার-username/repository-name.git
cd repository-nameOriginal repo-কে “upstream” হিসেবে add করো
git remote add upstream git@github.com:original-owner/repository-name.gitকাজ করো, push করো
git switch -c fix/typo-in-readme
git add .
git commit -m "Fix typo in README"
git push origin fix/typo-in-readmeOriginal repo-তে PR পাঠাও
GitHub-এ তোমার fork-এ যাও → Compare & pull request → Original repo-তে PR পাঠাও।
Fork সবসময় updated রাখো
git fetch upstream
git switch main
git merge upstream/main
git push origin mainChecklist
-
git remote -vদিয়ে remote দেখেছি -
git fetchএবংgit pullএর পার্থক্য বুঝেছি - GitHub-এ PR বানিয়েছি
- PR review করেছি এবং comment দিয়েছি
- Issue বানিয়েছি এবং commit-এ reference করেছি
- একটা repo fork করেছি এবং upstream add করেছি
Common Problems & Fixes
Merge conflicts in PR
main branch আগে বেড়ে গেছে, তোমার branch পুরনো হয়ে গেছে।
git switch feature/your-branch
git fetch origin
git merge origin/main
# conflict fix করো
git add .
git commit -m "Resolve merge conflicts with main"
git pushWhat’s Next?
Git এবং GitHub-এর core সব শেখা হয়ে গেছে। এখন real-world scenarios শিখবে।
→ Real Scenarios
Team project, client project, এবং open source contribution — তিনটা আলাদা real situation-এ কীভাবে Git + GitHub ব্যবহার করতে হয়, সেটা A to Z দেখবে।