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
গিট এবং গিটহাবের মধ্যে মূল পার্থক্যগুলো একনজরে দেখে নাও। এটা নিয়ে শুরুর দিকে অনেকের মধ্যে বিভ্রান্তি থাকতে পারে। একবারে ক্লিয়ার করে নাও:
| 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-এ রেখে দাও যাতে সবাই দেখতে পায়।
Remote Repositories
রিমোট রিপোজিটরির সাথে তোমার লোকাল প্রজেক্ট কানেক্ট করার কমান্ডগুলো দেখে নাও।
Remote Overview
রিমোট রিপোজিটরি আসলে কী এবং এটি কীভাবে কাজ করে তার একটি সংক্ষিপ্ত ধারণা।
“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 নাম।
Fetch & 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 করে
Usage Selection
কখন ফেচ (Fetch) আর কখন পুল (Pull) ব্যবহার করবে তার একটি সহজ নির্দেশিকা।
| Situation | Command |
|---|---|
| কাজ শুরুর আগে latest নামাও | git pull |
| দেখতে চাও কী এসেছে, apply করবে কিনা ঠিক করোনি | git fetch |
| Team-এর কাজ দেখতে চাও নিজের কাজ না ভেঙে | git fetch |
Daily life-এ বেশিরভাগ সময় git pull ই ব্যবহার হয়। git fetch advanced
situation-এ কাজে আসে।
Pull Requests
টিম বা ওপেন সোর্স প্রজেক্টে তোমার করা কাজগুলো রিভিউয়ের জন্য পাঠানোর প্রক্রিয়া।
PR Concept
পুল রিকোয়েস্ট বা 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 করো।
Code Review
অন্যের কোড রিভিউ করা এবং প্রফেশনাল ফিডব্যাক দেওয়ার সঠিক নিয়ম।
তোমার teammate তোমাকে review করতে বলেছে। কী করবে?
- Code দেখো: Files changed tab-এ যাও।
- Comment করো: line number-এর পাশে ”+” click করো।
- Review Submit করো: “Review changes” button-এ click করো এবং Approve বা Request changes দাও।
Merge Strategies
কোড সফলভাবে রিভিউ হওয়ার পর তা মার্জ করার বিভিন্ন প্রফেশনাল পদ্ধতি।
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 চাইলে |
প্রফেশনাল কাজের সুবিধার্থে “Squash and merge” ব্যবহার করা সবচেয়ে জনপ্রিয়। এতে হিস্ট্রি ক্লিন থাকে।
Merge করার পর GitHub বলবে “branch delete করবে?” — Delete branch click করো।
Issue Tracking
প্রজেক্টের বাগ ট্র্যাকিং এবং ফিচার ম্যানেজমেন্টের জন্য গিটহাব ইস্যু ব্যবহারের নিয়ম।
Issue হলো GitHub-এর task management system।
Issue Linking
সরাসরি ইস্যু থেকে ব্রাঞ্চ তৈরি করে কাজের ট্র্যাকিং নিখুঁত রাখার প্রফেশনাল পদ্ধতি।
পেশাদার কাজের ক্ষেত্রে সরাসরি ইস্যু থেকে ব্রাঞ্চ তৈরি করা একটি সর্বোত্তম অনুশীলন (Best Practice)। এটি ব্রাঞ্চ এবং ইস্যুকে সরাসরি লিঙ্ক করে রাখে।
Issue page-এ right sidebar-এ “Create a branch” option আছে। এটা automatically branch বানায় issue number সহ: 1-login-button-not-working। এতে branch এবং issue automatically linked থাকে।
Reference Issue
তোমার করা কাজের নির্দিষ্ট ইস্যু নাম্বার বা রেফারেন্স কমিট মেসেজে যুক্ত করো। এতে ইস্যু ট্র্যাকিং অনেক সহজ হয়।
git commit -m "Fix login button on Safari — closes #1"closes #1 লিখলে PR merge হওয়ার সাথে সাথে Issue automatically close হয়ে যাবে।
Forking Workflow
অন্যের কোনো প্রজেক্টে কন্ট্রিবিউট করার আগে সেটি নিজের অ্যাকাউন্টে কপি করে নেওয়ার ধাপ।
Fork Concept
ফর্ক আসলে কী এবং এর মাধ্যমে কীভাবে অন্য প্রজেক্টে কন্ট্রিবিউট শুরু করা যায়।
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-nameUpstream Setup
অরিজিনাল প্রোজেক্টের সাথে তোমার ফর্কটি কানেক্ট করার প্রফেশনাল ধাপ।
অরিজিনাল রিপোজিটরিকে “upstream” হিসেবে যুক্ত করে তোমার ফর্ক আপডেট রাখো। এটি অরিজিনাল প্রোজেক্টের পরিবর্তনগুলো ট্র্যাক করতে সাহায্য করে।
git remote add upstream git@github.com:original-owner/repository-name.gitActive Development
ফর্ক করা প্রজেক্টে পরিবর্তন আনা এবং নিজের রিমোট রিপোজিটরিতে পুশ করা।
git switch -c fix/typo-in-readme
git add .
git commit -m "Fix typo in README"
git push origin fix/typo-in-readmeSubmit PR
তোমার তৈরি করা ফর্ক থেকে অরিজিনাল রিপোজিটরিতে কাজের রিকোয়েস্ট (PR) পাঠানোর প্রক্রিয়া এখানে দেওয়া হলো।
GitHub-এ তোমার fork-এ যাও → Compare & pull request → Original repo-তে PR পাঠাও।
Sync Fork
অরিজিনাল প্রোজেক্টের লেটেস্ট আপডেটের সাথে নিজের ফর্ক সবসময় সিঙ্ক রাখার নিয়ম।
অরিজিনাল প্রোজেক্টের নতুন পরিবর্তনগুলোর সাথে তোমার ফর্ক সবসময় সিঙ্ক (Sync) রাখো।
git fetch upstream
git switch main
git merge upstream/main
git push origin mainCommon 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 দেখবে।