Git

Git মাস্টারি জার্নি — সম্পূর্ণ কারিকুলাম

Rakib Hasan11 min read
Table of Contents

ভূমিকা / সৎ প্রেক্ষাপট

এই পোস্ট নিজে কোনো টিউটোরিয়াল না — এটা Git মাস্টারি জার্নি-র ম্যাপ। আসল কনটেন্ট (৩১৬টা ডিটেইলড লিফ, প্রতিটাতে ইন্টারনাল মেকানিজম + বাস্তব উদাহরণ + কোড) journey পাতাতেই আছে। এখানে শুধু বোঝানো হচ্ছে কী কী আছে, কোন অর্ডারে পড়বেন, আর কোন অংশটা আপনার এখন সবচেয়ে বেশি দরকার।

এই কারিকুলাম কী গ্যারান্টি দেয় না:

  • এটা পড়লেই আপনি “গিট এক্সপার্ট” হয়ে যাবেন না — শুধু পড়া আর হাতে-কলমে করে দেখা এক জিনিস না। প্রতিটা মডিউলের ল্যাব (⭐) নিজে টার্মিনালে করে দেখুন।
  • এটা কোনো নির্দিষ্ট GUI টুল (SourceTree, GitKraken) বা নির্দিষ্ট hosting platform (GitLab, Bitbucket)-এর স্ক্রিনশট-বেসড গাইড না — Git কমান্ড-লাইন আর তার ইন্টারনালস-কেন্দ্রিক।

কেন এত গভীরে যাওয়া দরকার: বেশিরভাগ ডেভেলপার Git-কে ৮-১০টা মুখস্থ কমান্ডের সেট হিসেবে ব্যবহার করেন — add, commit, push, pull, আর ভয় পেলে git status বারবার। কিন্তু যখন একটা rebase মাঝপথে আটকে যায়, বা reset --hard করার পর কাজ হারিয়ে যায়, বা একটা leaked secret কমিট হয়ে যায় — তখন মুখস্থ কমান্ড আর কাজ করে না। internals (object model, ref model, index) বুঝলে প্রতিটা এমার্জেন্সি সিনারিওই আসলে যুক্তিসঙ্গত, সমাধানযোগ্য একটা পাজল হয়ে যায়।

এই কারিকুলাম নিয়ে আরও context: ব্লগে আগে থেকেই থাকা গিট সিনারিও এবং তার সমাধান পোস্টটা একটা quick-reference (১০০টা সিনারিও → সমাধান)। এই জার্নি সেটার চেয়ে অনেক গভীর, structured, আর ইন্টারনালস-ফোকাসড — দুইটা একসাথে ব্যবহার করুন।

এই গাইড কীভাবে ব্যবহার করবেন

Journey পাতায় প্রতিটা মডিউলের ভেতরে একই প্যাটার্নের কয়েকটা লেয়ার থাকে:

লেয়ার কী পাবেন
What / How / Why কনসেপ্ট বা কমান্ড কী, ভেতরে কীভাবে কাজ করে (object/ref/index মডেল), আর কেন দরকার — বাস্তব উদাহরণসহ
Do (ল্যাব) নিজে টার্মিনালে করার জন্য একটা স্টেপ-বাই-স্টেপ হ্যান্ডস-অন এক্সারসাইজ
পরীক্ষা ৪-৬টা ইন্টারভিউ-স্টাইল প্রশ্ন-উত্তর, ঐ মডিউলের টপিক নিয়ে
কর্নার কেস ঐ মডিউলের কমান্ডগুলোর সবচেয়ে কমন গোচরা/ফুটগান, আর তার ফিক্স

কিছু মডিউলের শেষে একটা 🔑 চেকপয়েন্ট (gate) leaf থাকে — এটা একটা “আপনি কি সত্যিই পারবেন?” self-check, পরের Phase-এ যাওয়ার আগে। এগুলো এড়িয়ে না গিয়ে সত্যিকারের সেলফ-টেস্ট হিসেবে ব্যবহার করুন।

সাজেস্টেড অর্ডার: Phase ০ থেকে ১২ পর্যন্ত ক্রমানুসারে পড়াই সবচেয়ে ভালো — বিশেষ করে Phase 2 (Git Internals) স্কিপ করবেন না, কারণ Phase 3-এর পর থেকে প্রায় প্রতিটা ব্যাখ্যাই object/ref/index মডেলের টার্মে করা। যদি আপনি ইতিমধ্যে দৈনন্দিন Git ব্যবহারে comfortable, তাহলে সরাসরি Phase 2 থেকে শুরু করে Phase 12 পর্যন্ত পড়তে পারেন — Phase 0-1 আপনার জন্য রিক্যাপ হবে মাত্র।

সূচিপত্র


Phase 0 — ওরিয়েন্টেশন

Git আসলে কী (আর কী না), তিনটা এলাকা (working directory/index/repo), আর কনফিগারেশনের চারটা লেভেল।

Module কী কভার হয় গুরুত্বপূর্ণ কমান্ড লিফ
1. ইতিহাস ও মেন্টাল মডেল VCS-এর ইতিহাস, Git vs GitHub, তিনটা এলাকা, snapshot মডেল git init, git config 8
2. Configuration Levels system/global/local/worktree precedence, includeIf git config --list --show-origin, core.editor, init.defaultBranch 8

Phase 1 — Local Workflow বেসিকস

সলো ডেভেলপমেন্টের দৈনন্দিন লুপ — repo বানানো থেকে কমিট করা পর্যন্ত।

Module কী কভার হয় গুরুত্বপূর্ণ কমান্ড লিফ
3. Repo তৈরি ও ক্লোন init/clone, shallow clone প্রিভিউ git init, git clone --depth 7
4. Staging status/add/diff/restore/rm/mv git add -p, git restore --staged 9
5. Commit commit message নিয়ম, amend, fixup git commit --amend, -v 9

Phase 2 — Git Internals: Object Model

পুরো জার্নির ভিত্তি — এই Phase স্কিপ করলে পরের সব কিছুর ব্যাখ্যা ভাসা-ভাসা লাগবে।

Module কী কভার হয় গুরুত্বপূর্ণ কমান্ড লিফ
6. Blob/Tree/Commit content-addressable storage, তিনটা অবজেক্ট টাইপ git hash-object, git cat-file 9
7. Refs, HEAD, Index 🔑 refs আসলে কী, HEAD, .git/index, প্লাম্বিং দিয়ে হাতে কমিট বানানো git update-ref, git write-tree, git commit-tree 10
8. Packfiles & Maintenance loose vs packed objects, gc, fsck git gc, git repack, git fsck --lost-found 8

Phase 3 — Branching ও Ref Model গভীরে

Module কী কভার হয় গুরুত্বপূর্ণ কমান্ড লিফ
9. Branch CRUD branch লাইফসাইকেল, switch vs checkout git switch -c, git branch -d/-D 7
10. Detached HEAD & Orphan detached HEAD কীভাবে ঘটে ও রিকভারি git switch --detach, --orphan 8

Phase 4 — Merging, Rebasing, History Rewriting

সবচেয়ে ঘন Phase — merge/rebase/reset/cherry-pick/reflog, প্রতিটাই “undo মাস্টারি”-র অংশ।

Module কী কভার হয় গুরুত্বপূর্ণ কমান্ড লিফ
11. Merge Fundamentals fast-forward vs 3-way git merge --no-ff/--ff-only 7
12. Conflict Resolution Deep-Dive conflict markers, ours/theirs, rerere git merge --abort, git rerere 9
13. Reset & Undo Model soft/mixed/hard, reset vs revert git reset --hard, git revert -m 8
14. Interactive Rebase replay মডেল, pick/squash/fixup git rebase -i, --onto, --autosquash 9
15. Cherry-pick সিঙ্গেল/রেঞ্জ, hotfix backport git cherry-pick -x 8
16. Reflog সেফটি নেট 🔑 HEAD@{n}, হারানো কমিট রিকভারি git reflog, git fsck 10

Phase 5 — Remote Collaboration

Module কী কভার হয় গুরুত্বপূর্ণ কমান্ড লিফ
17. Remotes origin/upstream কনভেনশন git remote add/set-url 7
18. Fetch/Pull/Push force vs force-with-lease, non-fast-forward git push --force-with-lease 9
19. টিম ওয়ার্কফ্লো প্যাটার্ন feature-branch, Gitflow, trunk-based 8

Phase 6 — History Exploration ও Forensics

Module কী কভার হয় গুরুত্বপূর্ণ কমান্ড লিফ
20. log গভীরে pickaxe, graph, grep, format git log -S, -G, --graph 9
21. show/diff/blame two-dot vs three-dot, blame ignore-rev git blame -w --ignore-rev 9
22. bisect বাইনারি সার্চ দিয়ে bug খোঁজা git bisect run 7

Phase 7 — Tagging, Releases, Stashing

Module কী কভার হয় গুরুত্বপূর্ণ কমান্ড লিফ
23. Tags lightweight vs annotated vs signed git tag -a, --follow-tags 9
24. Stash partial stash, stash branch git stash push -p, stash branch 8

Phase 8 — Advanced Workspace Tools

Module কী কভার হয় গুরুত্বপূর্ণ কমান্ড লিফ
25. Worktree একাধিক working directory, শেয়ার্ড object DB git worktree add 7
26. Submodules & Subtrees .gitmodules, subtree বিকল্প git submodule update --init 8
27. বড় Repo / Monorepo 🔑 partial clone, sparse-checkout, LFS git sparse-checkout set, git lfs track 9

Phase 9 — Customization, Hooks, Automation

Module কী কভার হয় গুরুত্বপূর্ণ কমান্ড লিফ
28. Aliases & Config shell alias vs pure git alias git config --global alias. 6
29. gitignore/gitattributes eol normalization, export-ignore git check-ignore -v 8
30. Hooks client/server-side hooks, core.hooksPath pre-commit, pre-push 7

Phase 10 — Security ও Repository Hygiene

Module কী কভার হয় গুরুত্বপূর্ণ কমান্ড লিফ
31. Signing GPG/SSH commit ও tag signing git commit -S, git verify-commit 8
32. Credentials PAT vs SSH key, credential helpers git credential fill 8
33. সিক্রেট রিমুভাল 🔑 leaked secret purge, রোটেশন git filter-repo 11

Phase 11 — GitHub-নির্দিষ্ট ওয়ার্কফ্লো

এই পুরো Phase-এ বারবার জোর দেওয়া হয়েছে: এগুলো GitHub প্ল্যাটফর্মের ফিচার, core Git-এর অংশ না।

Module কী কভার হয় গুরুত্বপূর্ণ কমান্ড লিফ
34. Fork ও Upstream Sync fork sync প্যাটার্ন git remote add upstream 7
35. Pull Request merge/squash/rebase-merge তুলনা gh pr create 8
36. Branch Protection ও গভর্নেন্স CODEOWNERS, required checks 7
37. GitHub Actions বেসিক 🔑 workflow YAML, triggers, secrets .github/workflows/*.yml 8

Phase 12 — ট্রাবলশুটিং প্লেবুক ও ক্যাপস্টোন

জার্নির সমাপ্তি — বাস্তব ইমার্জেন্সি সিনারিও আর একটা চূড়ান্ত ক্যাপস্টোন।

Module কী কভার হয় লিফ
38. ইমার্জেন্সি সিনারিও ওয়াকথ্রু ৭টা রিয়েল-ওয়ার্ল্ড ক্রাইসিস (ভুল branch, force-push রিকভারি, corrupt repo, diverged branch…) 10
39. Merge vs Rebase Framework ও ক্যাপস্টোন 🔑 ডিসিশন গাইড, কমান্ড চিটশিট, চূড়ান্ত ক্যাপস্টোন সিমুলেশন 4

গেট/চেকপয়েন্ট তালিকা

জার্নিতে মোট ৬টা 🔑 gate checkpoint আছে — প্রতিটা একটা মেজর মাইলস্টোন শেষে:

  1. Module 7 শেষে (Phase 2) — Object model/refs/index সত্যিই বোঝা হয়েছে কিনা যাচাই।
  2. Module 16 শেষে (Phase 4) — “Undo মাস্টারি” — reflog দিয়ে যেকোনো ভুল থেকে রিকভার করার আত্মবিশ্বাস।
  3. Module 27 শেষে (Phase 8) — বড় repo/monorepo টুলিং-এ স্বচ্ছন্দ কিনা।
  4. Module 33 শেষে (Phase 10) — সিকিউরিটি হাইজিন অভ্যাসে পরিণত হয়েছে কিনা।
  5. Module 37 শেষে (Phase 11) — GitHub টিম-ওয়ার্কফ্লো (fork/PR/protection/Actions) মিলিয়ে।
  6. Module 39 — চূড়ান্ত ক্যাপস্টোন (Phase 12) — একটা সিমুলেটেড ক্রাইসিস-উইক রিপোতে conflict + rebase + reflog + secret removal + governed PR merge সব একসাথে।

Appendix A — সম্পূর্ণ কমান্ড চিটশিট

জার্নির প্রতিটা কমান্ড বিস্তারিতভাবে নিজের leaf-এ কভার করা আছে; এখানে শুধু ক্যাটাগরি-বাই-ক্যাটাগরি একটা কম্প্যাক্ট ইনডেক্স:

ক্যাটাগরি প্রতিনিধিত্বমূলক কমান্ড কোথায় বিস্তারিত
সেটআপ ও কনফিগ init, clone, config, includeIf Phase 0
স্টেজিং ও কমিট add -p, status -s, restore, commit --amend Phase 1
প্লাম্বিং / অবজেক্ট মডেল hash-object, cat-file, write-tree, commit-tree, update-ref Phase 2
ব্রাঞ্চিং branch, switch -c, switch --detach/--orphan Phase 3
মার্জ/রিবেস/আন্ডু merge --no-ff, rebase -i, reset --soft/--mixed/--hard, revert, cherry-pick, reflog Phase 4
রিমোট remote, fetch -p, pull --rebase, push --force-with-lease Phase 5
হিস্ট্রি/ফরেনসিক্স log -S/-G/--graph, show, blame -w, bisect run Phase 6
ট্যাগ ও স্ট্যাশ tag -a -s, stash push -p, stash branch Phase 7
ওয়ার্কস্পেস টুলস worktree add, submodule update, sparse-checkout set, lfs track Phase 8
কাস্টমাইজেশন alias, check-ignore -v, hooks (pre-commit, pre-push) Phase 9
সিকিউরিটি commit -S, verify-commit, credential fill, filter-repo Phase 10
GitHub ওয়ার্কফ্লো gh pr create, branch protection, GitHub Actions YAML Phase 11
ইমার্জেন্সি প্লেবুক wrong-branch fix, force-push রিকভারি, fsck+repack Phase 12

সম্পূর্ণ, ব্যাখ্যাসহ ৩০-৪০টা কমান্ডের এক্সটেন্ডেড রেফারেন্স টেবিল Module 39-এর প্রথম leaf-এই আছে।

Appendix B — রিসোর্স লিস্ট

  • Pro Git বই (git-scm.com/book) — ফ্রি, অফিসিয়াল, সবচেয়ে নির্ভরযোগ্য গভীর রেফারেন্স।
  • git-scm.com/docs — প্রতিটা কমান্ডের অফিসিয়াল man page, ফ্ল্যাগ-বাই-ফ্ল্যাগ।
  • GitHub Docs (docs.github.com) — fork/PR/Actions/branch-protection-এর মতো প্ল্যাটফর্ম-স্পেসিফিক ফিচারের জন্য।
  • git-filter-repo ডকুমেন্টেশন — সিক্রেট রিমুভাল/হিস্ট্রি রিরাইটের জন্য অফিসিয়াল রিপ্লেসমেন্ট টুল হিসেবে filter-branch-এর বদলে।

Appendix C — এই কারিকুলাম কী কভার করে না

  • GUI Git ক্লায়েন্ট (SourceTree, GitKraken, Git-এর নিজস্ব gitk/git gui)-এর স্ক্রিনশট-বেসড ওয়াকথ্রু — এই জার্নি কমান্ড-লাইন-কেন্দ্রিক।
  • GitLab/Bitbucket-স্পেসিফিক ফিচার (এগুলোর merge request/pipeline সিস্টেম GitHub-এর থেকে আলাদা, যদিও কনসেপ্টগুলো মিল আছে)।
  • Bazel/Pants-এর মতো ডেডিকেটেড মনোরেপো বিল্ড টুলিং — Phase 8-এ শুধু Git-নেটিভ মনোরেপো টুল (sparse-checkout, partial clone) কভার করা হয়েছে।
  • অ্যাডভান্সড CI/CD পাইপলাইন ডিজাইন (multi-stage deployment, canary release ইত্যাদি) — Phase 11-এ শুধু GitHub Actions-এর বেসিক পরিচিতি আছে।

Appendix D — প্রোগ্রেস ট্র্যাকার

  • Phase 0 — ওরিয়েন্টেশন
  • Phase 1 — Local Workflow বেসিকস
  • Phase 2 — Git Internals: Object Model 🔑
  • Phase 3 — Branching ও Ref Model গভীরে
  • Phase 4 — Merging, Rebasing, History Rewriting 🔑
  • Phase 5 — Remote Collaboration
  • Phase 6 — History Exploration ও Forensics
  • Phase 7 — Tagging, Releases, Stashing
  • Phase 8 — Advanced Workspace Tools 🔑
  • Phase 9 — Customization, Hooks, Automation
  • Phase 10 — Security ও Repository Hygiene 🔑
  • Phase 11 — GitHub-নির্দিষ্ট ওয়ার্কফ্লো 🔑
  • Phase 12 — ট্রাবলশুটিং প্লেবুক ও ক্যাপস্টোন (চূড়ান্ত 🔑)

পুরো জার্নি পড়ুন এখানে: Git মাস্টারি জার্নি

Comments