Skip to content

Repository files navigation

🧭 Git Quest فارسی

مسیر عملی یادگیری Git برای کارآموزها — از اولین Clone تا حل Conflict و Revert

Git GitHub Language Level Missions Mindset

Learn Git by using Git.
نه با حفظ کردن دستورها؛ با دیدن مسئله، تشخیص وضعیت و انتخاب تصمیم درست.

[!IMPORTANT] این Repo برای حفظ‌کردن دستورهای Git ساخته نشده.
هر مرحله اول یک مسئله‌ی واقعی و قابل‌فهم ایجاد می‌کند؛ بعد Git به‌عنوان راه‌حل وارد داستان می‌شود.


⚡ TL;DR

Problem → Inspect → Decide → Change → Verify → Commit → Share → Review → Recover

اگر بعد از این دوره فقط دستورها را حفظ کرده باشی، هدف اصلی را از دست داده‌ای.
اگر بتوانی قبل از زدن هر دستور توضیح بدهی الان Repository در چه وضعیتی است و می‌خواهی چه چیزی را تغییر بدهی، مسیر را درست رفته‌ای.


🎬 داستان دوره

شما به یک گروه کوچک کمک می‌کنید که یک راهنمای عمومی شهر را نگهداری می‌کند.

پروژه نه بک‌اند دارد، نه فرانت‌اند، نه فریم‌ورک خاص. فقط چند فایل Markdown ساده:

city-guide/
├── README.md
├── places/
│   ├── cafes.md
│   ├── parks.md
│   └── museums.md
├── tips/
│   ├── transportation.md
│   └── budget.md
└── contributors.md

بنابراین اگر کسی هنوز برنامه‌نویسی بلد نباشد هم می‌تواند تمام تمرکز خود را روی Git بگذارد.

[!NOTE] ساده بودن فایل‌ها عمدی است. پیچیدگی این دوره باید از تصمیم‌گیری در Git بیاید، نه از زبان برنامه‌نویسی یا Framework.


🗺️ نقشه‌ی کلی مسیر

flowchart LR
    A["Clone"] --> B["Status & Diff"]
    B --> C["Stage & Commit"]
    C --> D["History"]
    D --> E["Branch"]
    E --> F["Atomic Commits"]
    F --> G["Push"]
    G --> H["Pull Request"]
    H --> I["Review & Sync"]
    I --> J["Conflict & Revert"]
Loading
مرحله نام مأموریت مفهوم اصلی
01 اولین روز clone / local / remote / origin
02 یک اشتباه کوچک status / diff / working tree
03 همه‌چیز را Commit نکن staging / add / commit
04 چه کسی این را تغییر داد؟ log / show / hash
05 امن کار کن branch / main / switch
06 تاریخچه را تمیز نگه دار atomic commit / commit message
07 کارت را با تیم به اشتراک بگذار push / upstream / remote branch
08 درخواست بررسی بده Pull Request / review / merge
09 با تغییرات دیگران هماهنگ شو pull / fetch / cleanup
10 وقتی همه‌چیز طبق برنامه نیست conflict / revert
🏁 Final Mission اجرای مستقل Workflow کامل

🚦 از کجا شروع کنم؟

  1. فایل START-HERE.md را بخوان.
  2. قوانین دوره را در RULES.md ببین.
  3. از missions/01-first-day/README.md شروع کن.
  4. بعد از پایان هر مرحله، نتیجه را در PROGRESS.md ثبت کن.
  5. اگر گیر کردی، Hintهای همان مرحله را به‌ترتیب باز کن؛ مستقیم سراغ جواب آخر نرو.
  6. بعد از ۱۰ مرحله، وارد final-mission/README.md شو.

[!TIP] اگر وسط مسیر یک اصطلاح یادت رفت، اول GLOSSARY.md را ببین.
اگر مفهوم را می‌دانی ولی Syntax دستور یادت نیست، آن وقت CHEATSHEET.md را باز کن.


🧠 چیزی که باید در پایان واقعاً بفهمی

در پایان باید بتوانی بدون نگاه‌کردن به Cheat Sheet توضیح بدهی:

  • Repository چیست؟
  • Local و Remote چه فرقی دارند؟
  • origin چیست؟
  • Clone چه تفاوتی با Download ZIP دارد؟
  • Working Directory چیست؟
  • Stage کردن یعنی چه؟
  • چرا git add . همیشه انتخاب خوبی نیست؟
  • Commit خوب چه ویژگی‌ای دارد؟
  • Branch برای چه ساخته می‌شود؟
  • Push با Commit چه فرقی دارد؟
  • Pull با Fetch چه فرقی دارد؟
  • Pull Request دستور Git است یا Workflow تیمی؟
  • Merge چیست؟
  • Conflict چرا رخ می‌دهد؟
  • Revert چرا برای تاریخچه‌ی مشترک امن‌تر از دستکاری History است؟

🔬 سؤال حرفه‌ای‌تر

وقتی git status می‌زنی، صرفاً خروجی را نخوان. از خودت بپرس:

«Git الان چه چیزی را درباره‌ی Working Tree، Staging Area و HEAD به من می‌گوید؟»

همین سؤال کوچک، مرز بین Command User و کسی است که Git را واقعاً می‌فهمد.


🧩 ساختار آموزشی Repo

git-internship-fa/
├── README.md
├── START-HERE.md
├── RULES.md
├── PROGRESS.md
├── GLOSSARY.md
├── CHEATSHEET.md
├── CONTRIBUTING.md
│
├── .github/
│   └── PULL_REQUEST_TEMPLATE.md
│
├── docs/
│   ├── WORKFLOW.md
│   ├── COMMIT-GUIDE.md
│   ├── PR-GUIDE.md
│   └── CONFLICT-GUIDE.md
│
├── city-guide/
│   ├── README.md
│   ├── contributors.md
│   ├── places/
│   │   ├── cafes.md
│   │   ├── parks.md
│   │   └── museums.md
│   └── tips/
│       ├── transportation.md
│       └── budget.md
│
├── missions/
│   ├── 01-first-day/
│   ├── 02-small-mistake/
│   ├── 03-not-everything/
│   ├── 04-who-changed-this/
│   ├── 05-work-safely/
│   ├── 06-clean-history/
│   ├── 07-share-your-work/
│   ├── 08-ask-for-review/
│   ├── 09-work-with-others/
│   └── 10-when-things-go-wrong/
│
├── final-mission/
│   └── README.md
│
└── mentor/
    ├── README.md
    ├── ANSWER-KEY.md
    ├── EVALUATION.md
    ├── MISSION-CHECKLIST.md
    ├── SCENARIO-SETUP.md
    └── PUBLISH.md

[!CAUTION] پوشه‌ی mentor/ برای مربی است. اگر کارآموز هستی، باز کردن Answer Key قبل از تلاش واقعی چیزی را «سریع‌تر» نمی‌کند؛ فقط مرحله‌ای را که قرار بوده مغزت انجام دهد Skip می‌کند.


📖 راهنماهای تکمیلی

اگر در طول مسیر نیاز به مرور مفهوم داشتی:


🧪 Git Lab Mindset

در این Repo سه قانون ذهنی از خود دستورها مهم‌ترند:

1. Before change  → Know where you are.
2. Before commit  → Know what you are committing.
3. Before publish → Know what other people will receive.

[!TIP] حرفه‌ای‌ها کمتر اشتباه نمی‌کنند؛ بیشتر قبل از حرکت وضعیت را Inspect می‌کنند و وقتی اشتباه می‌کنند، Recovery Path را می‌شناسند.


🏁 معیار موفقیت

هدف نهایی این نیست که کارآموز بتواند ۲۰ دستور را از حفظ بنویسد.

هدف این است که وقتی فقط یک Task دریافت می‌کند، خودش این مسیر را تشخیص دهد:

sync main
   ↓
create branch
   ↓
make focused change
   ↓
inspect diff
   ↓
stage intentionally
   ↓
commit clearly
   ↓
push branch
   ↓
open PR
   ↓
handle review
   ↓
merge
   ↓
sync local main
   ↓
cleanup

🧠 One More Thing

Git بیشتر از اینکه «سیستم ذخیره‌ی فایل» باشد، یک مدل تاریخچه و Snapshot است.

وقتی این جمله را واقعاً بفهمی، خیلی از چیزهایی که اول عجیب به نظر می‌رسند — Branch، Merge، Revert، Detached HEAD و حتی Conflict — قابل پیش‌بینی‌تر می‌شوند.

Don't memorize Git. Build a mental model of Git.


اصل دوره:
«اول مسئله را بفهم، بعد دستور Git را انتخاب کن.»


 ██████╗██╗   ██╗██████╗ ███████╗██████╗ ███╗   ██╗██╗████████╗██╗  ██╗
██╔════╝╚██╗ ██╔╝██╔══██╗██╔════╝██╔══██╗████╗  ██║██║╚══██╔══╝██║  ██║
██║      ╚████╔╝ ██████╔╝█████╗  ██████╔╝██╔██╗ ██║██║   ██║   ███████║
██║       ╚██╔╝  ██╔══██╗██╔══╝  ██╔══██╗██║╚██╗██║██║   ██║   ██╔══██║
╚██████╗   ██║   ██████╔╝███████╗██║  ██║██║ ╚████║██║   ██║   ██║  ██║
 ╚═════╝   ╚═╝   ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝╚═╝   ╚═╝   ╚═╝  ╚═╝

C Y B E R N I T H

Crafted & maintained by Soroosh Morshedi
🌐 sorooshmorshedi.ir · Instagram @cybernith · LinkedIn sorooshMorshedi

Built with curiosity, discipline, and a suspiciously large amount of Git history.

About

📚 git-internship-quest A hands-on Persian Git learning journey for interns | from clone and clean commits to branches, pull requests, conflicts, and revert

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors