# مشخصات درسنامه: آشنایی با Git و GitHub به زبان ساده (Git & GitHub: The Code Time Machine)
- **شناسه در سیلابس:** `L3.6`
- **فصل:** فصل ۳: راهاندازی محیط کار (Ch 3)
- **نوع محتوا:** 📘 درسنامه متنی
- **زمان تقریبی مطالعه:** ۱۵ دقیقه
- **پیشنیازهای مستقیم:** `L3.5` (ابزارهای مرورگری)
---
## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
- [ ] **درک کند (Understand):** تفاوت بنیادین Git (سیستم محلی کنترل نسخه و ماشین زمان کدها) با GitHub (سرویس ابری نگهداری و اشتراکگذاری مخازن) چیست.
- [ ] **درک کند (Understand):** استعاره «چکپوینت بازی» (Save Game) در گیت چگونه ترس از دست رفتن یا خراب شدن کدها توسط هوش مصنوعی را برای همیشه از بین میبرد.
- [ ] **بهکار ببندد (Apply):** چرخه اساسی سهمرحلهای ذخیره تغییرات را اجرا کند: **بررسی تغییرات (`git status`) $\rightarrow$ بستهبندی و ثبت چکپوینت (`git add` و `git commit`) $\rightarrow$ فرستادن به ابر (`git push`)**.
- [ ] **بهکار ببندد (Apply):** ابزار کنترل نسخه گرافیکی (Source Control GUI) موجود در محیط Cursor را بدون نیاز به حفظ دستورات طولانی ترمینال به کار گیرد.
- [ ] **تحلیل/ارزیابی کند (Evaluate):** ضرورت و نقش حیاتی فایل `.gitignore` در جلوگیری از ارسال پوشههای سنگین (`node_modules`) و فایلهای حاوی رمزهای خصوصی (`.env`) به گیتهاب را تحلیل کند.
---
## ۲. محدوده و مرزهای محتوا (Scope & Boundaries)
### آنچه باید پوشش داده شود (In-Scope):
1. **استعاره ماشین زمان (Git as a Time Machine):**
* در وایب کدینگ، ایجنت هوش مصنوعی ممکن است کدهایی بنویسد که کار نکنند یا ظاهر پروژه را به هم بریزند. با Git، در کسری از ثانیه میتوانید به ۱۰ دقیقه قبل (آخرین وضعیت سالم) بازگردید.
2. **تفاوت شفاف Git و GitHub:**
* **Git:** نرمافزاری که روی سیستم شما نصب میشود و تغییرات فایلها را خطبهخط رصد میکند.
* **GitHub:** سایتی اینترنتی که کدهای شما را به شکل امن آنلاین نگه میدارد و امکان استقرار و اشتراکگذاری را فراهم میسازد.
3. **راهنمای نصب و پیکربندی اولیه Git با منوهای کشویی سیستمعاملها:**
* `راهنمای نصب و تنظیم در ویندوز (Windows)
... `: دانلود اینستالر رسمی Git for Windows، تنظیم نام و ایمیل (`git config --global user.name` و `user.email`).
* `راهنمای نصب و تنظیم در مکاواس (macOS)
... `: نصب از طریق ابزار Xcode Command Line یا Homebrew و تنظیمات هویت.
* `راهنمای نصب و تنظیم در لینوکس (Linux)
... `: دستور `sudo apt install git` و تنظیمات نام کاربری.
4. **سه فرمان جادویی برای زندگی روزمره با Git:**
* `git status`: وضعیت فایلهای تغییر یافته را نشان میدهد.
* `git add .` و `git commit -m "پیام ثبت"`: ثبت یک نقطه بازیابی سالم (Save Point).
* `git push`: فرستادن چکپوینتها به گیتهاب.
* ارائه این دستورات در تبهای کشویی متناظر با سیستمعاملها.
5. **استفاده از پنل گرافیکی Git در ادیتور Cursor:**
* آموزش دیدن فایلهای تغییریافته با رنگهای سبز (فایل جدید) و زرد (فایل ویرایششده)، زدن دکمه `+` و فشردن دکمه Commit بدون تایپ دستورات.
6. **مفهوم شاخهها (Branches) — جهانهای موازی:**
* ساخت یک شاخه تستی برای پرامپتهای پرریسک؛ اگر خراب شد پاکش میکنیم، اگر عالی بود به شاخه اصلی (main) ملحق میکنیم.
7. **فایل جادویی `.gitignore`:**
* چیست و چرا باید پوشه غولپیکر `node_modules` و فایلهای محرمانه `.env` را در آن بنویسیم تا به سرورهای گیتهاب ارسال نشوند.
8. **کالاوتهای Quera:**
* ``: قانون طلایی وایب کدینگ: پیش از هر پرامپت بزرگ و تحولآفرین، حتماً یک چکپوینت (Commit) ثبت کنید!
* ``: هرگز فایلهای حاوی رمز یا توکنهای مالی را بدون ثبت در `.gitignore` روی گیتهاب پابلیک پوش نکنید.
### آنچه نباید وارد آن شویم (Out-of-Scope):
- حل کانفلیکتهای فوقپیشرفته گیت (Merge Conflicts) در تیمهای چندنفره (این موضوع در فصل ۹ و دیباگ بررسی خواهد شد).
- دستورات پیچیدهای نظیر `git rebase -i`، `cherry-pick` یا `git bisect`.
---
## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
| :--- | :--- | :--- |
| Version Control System (VCS) | سیستم کنترل نسخه | ابزاری که تاریخچه تکتک تغییرات فایلهای پروژه را به صورت زمانی ثبت و حفظ میکند |
| Repository (Repo) | مخزن پروژه | پوشه نگهداری کدها و تاریخچه تغییرات یک پروژه در سیستم یا روی گیتهاب |
| Commit | ثبت تغییرات / چکپوینت | ثبت یک وضعیت پایدار و عکسبرداریشده از فایلهای پروژه به همراه پیام توضیحی |
| Branch | شاخه موازی | مسیری مجزا برای توسعه و آزمایش ویژگیهای جدید بدون به خطر انداختن کد اصلی |
| .gitignore | فایل نادیدهگیری | فایلی متنی که تعیین میکند چه پوشهها یا اطلاعات محرمانهای نباید ذخیره یا آپلود شوند |
---
## ۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
> **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` قرار گرفته و در قالب جدول تکخانهای وسطچین با کپشن تفصیلی درج شوند:
1. **تصویر کاور درس:** `images/cover.png`
* **موضوع:** کاور با تم تیره و لوگوی رسمی Git و GitHub در هیئت یک ماشین زمان دیجیتال با چرخدندههای نئونی و مسیرهای زمانی.
2. **گیت به عنوان ماشین زمان:** `images/git-time-machine-timeline.png`
* **موضوع:** خط زمانی تصویری که زنجیره کامیتهای سالم را نشان میدهد و فلش بازگشت به عقب در صورت خرابکاری ایجنت در یک مرحله.
3. **تفاوت Git در کامپیوتر شما با GitHub در ابر:** `images/git-vs-github-diagram.png`
* **موضوع:** تصویر شماتیک لپتاپ کاربر (Git محلی) که با کابل امنیتی ابری به سرورهای GitHub متصل است.
4. **شاخهها به عنوان جهانهای موازی:** `images/git-branches-concept.png`
* **موضوع:** انشعاب شاخه آزمایشی (feature/experiment) از شاخه پایدار (main) و ادغام موفقیتآمیز آن پس از تایید تست.
5. **پنل گرافیکی گیت در Cursor:** `images/cursor-git-gui.png`
* **موضوع:** اسکرینشات تمیز از تب Source Control در ادیتور Cursor با بخش Staged Changes و کادر تایپ پیام کامیت.
---
## ۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (`README.md`)
1. **تیتر اصلی:** `# آشنایی با Git و GitHub به زبان ساده: ماشین زمان کدهای شما`
2. **مقدمه ملموس:** چرا گیت بهترین دوست و شبکه نجات یک وایب کدر در برابر خرابکاریهای هوش مصنوعی است؟
3. **جدول کاور درس**
4. **استعاره ماشین زمان و سیو گیم (Save Point):** رفع هراس از خطاهای کد.
5. **تفاوت اساسی Git با GitHub:** سیستم محلی در برابر فضای ابری.
6. **نصب و معرفی هویت شما به Git:**
* منوی کشویی ویندوز (Windows).
* منوی کشویی مکاواس (macOS).
* منوی کشویی لینوکس (Linux).
7. **چرخه روزمره ۳ گام اصلی: وضعیت، ثبت و ارسال:** تشریح `status`، `commit` و `push`.
8. **باکس نکته طلایی Quera (``):** ثبت کامیت قبل از ارسال پرامپتهای سنگین به ایجنت.
9. **کنترل نسخه بدون تایپ دستور: کار با تب گیت در Cursor:** استفاده از پنل دیداری و دکمههای ساده.
10. **شاخهها (Branches): بازی در زمین امن موازی:** چگونه بدون ترس ایدههای دیوانهوار را بیازماییم؟
11. **فایل نگهبان `.gitignore`:** جلوگیری از ارسال پوشههای غولپیکر و دادههای حساس به اینترنت.
12. **باکس هشدار امنیتی Quera (``):** عدم انتشار فایلهای کلید محرمانه (`.env`).
13. **جمعبندی درسنامه:** تسلط بر امنیت پروژه و آماده شدن برای اضافه کردن سوپرپاورها به ایجنت.
---
## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
- [ ] مفاهیم انتزاعی گیت با استعارههای ملموس (ماشین زمان، چکپوینت بازی) به زبان ساده برای غیربرنامهنویسان تبیین شده باشد.
- [ ] دستورالعملهای نصب و تنظیم در ۳ منوی کشویی مجزا برای سیستمعاملها پیادهسازی شده باشد.
- [ ] کار با پنل گرافیکی Source Control ادیتور Cursor به صورت تصویری شرح داده شود.
- [ ] اهمیت فایل `.gitignore` و حفظ امنیت کلیدها صریحاً هشدار داده شود.