|
|
| خط ۱: |
خط ۱: |
| == Git ==
| |
| [[Category:Git]]
| |
|
| |
|
| Git یه سیستم '''کنترل نسخه (Version Control System)''' هست که بهت اجازه میده تاریخچهی تغییرات فایلها و کدهات رو ذخیره کنی، به نسخههای قبلی برگردی، و با چند نفر همزمان روی یه پروژه کار کنی بدون اینکه کارها رو خراب کنید.
| |
|
| |
| === مفاهیم پایه | Basic Concepts ===
| |
|
| |
| * '''Repository (Repo)''': پوشهای که Git توش تاریخچهی تغییرات رو ذخیره میکنه.
| |
| * '''Commit''': یه "عکس لحظهای" (snapshot) از وضعیت فایلها در یه لحظه خاص، همراه با یه پیام توضیحی.
| |
| * '''Branch''': یه مسیر جدا برای توسعه، که بهت اجازه میده بدون تأثیر روی نسخهی اصلی، تغییرات بدی.
| |
| * '''Merge''': ترکیب کردن تغییرات دو Branch با هم.
| |
| * '''Remote''': نسخهای از Repo که روی یه سرور دیگه (مثل GitHub) قرار داره.
| |
| * '''Working Directory''': فایلهای واقعی روی سیستم تو.
| |
| * '''Staging Area (Index)''': جایی که تغییرات رو قبل از Commit کردن آماده میکنی.
| |
|
| |
| === راهاندازی اولیه | Initial Setup ===
| |
|
| |
| <syntaxhighlight lang="bash">
| |
| git config --global user.name "نام شما"
| |
| git config --global user.email "you@example.com"
| |
| </syntaxhighlight>
| |
|
| |
| === شروع یه پروژه | Starting a Project ===
| |
|
| |
| <syntaxhighlight lang="bash">
| |
| git init # ساخت یه Repo جدید در پوشه فعلی
| |
| git clone <url> # کپی کردن یه Repo از یه آدرس ریموت
| |
| </syntaxhighlight>
| |
|
| |
| === چرخهی اصلی کار | Basic Workflow ===
| |
|
| |
| <syntaxhighlight lang="bash">
| |
| git status # دیدن وضعیت فعلی فایلها
| |
| git add <file> # اضافه کردن فایل به Staging Area
| |
| git add . # اضافه کردن همه فایلهای تغییر یافته
| |
| git commit -m "پیام توضیحی" # ثبت تغییرات
| |
| git log # دیدن تاریخچه Commit ها
| |
| </syntaxhighlight>
| |
|
| |
| === کار با Branch ===
| |
|
| |
| <syntaxhighlight lang="bash">
| |
| git branch # لیست Branch ها
| |
| git branch new-feature # ساخت Branch جدید
| |
| git checkout new-feature # رفتن به یه Branch
| |
| git checkout -b new-feature # ساخت و رفتن همزمان
| |
| git switch new-feature # روش جدیدتر برای جابجایی بین Branch ها
| |
| git merge new-feature # ادغام یه Branch با Branch فعلی
| |
| git branch -d new-feature # حذف یه Branch
| |
| </syntaxhighlight>
| |
|
| |
| === کار با Remote (مثل GitHub) ===
| |
|
| |
| <syntaxhighlight lang="bash">
| |
| git remote add origin <url> # اضافه کردن یه ریموت
| |
| git push origin main # ارسال تغییرات به ریموت
| |
| git pull origin main # دریافت و ادغام تغییرات از ریموت
| |
| git fetch # فقط دریافت تغییرات بدون ادغام
| |
| </syntaxhighlight>
| |
|
| |
| === برگشت به عقب و اصلاح اشتباهات ===
| |
|
| |
| <syntaxhighlight lang="bash">
| |
| git checkout -- <file> # لغو تغییرات یه فایل (قبل از add)
| |
| git reset <file> # خارج کردن فایل از Staging Area
| |
| git reset --hard HEAD~1 # حذف کامل آخرین Commit (با احتیاط!)
| |
| git revert <commit-hash> # ساخت یه Commit جدید که تغییرات یه Commit قبلی رو خنثی میکنه
| |
| </syntaxhighlight>
| |
|
| |
| === فایل .gitignore ===
| |
|
| |
| فایلی که بهش میگی Git کدوم فایلها/پوشهها رو نادیده بگیره (مثل node_modules، فایلهای موقت، تنظیمات شخصی).
| |
|
| |
| <syntaxhighlight lang="text">
| |
| node_modules/
| |
| .env
| |
| *.log
| |
| </syntaxhighlight>
| |
|
| |
| === اصطلاحات پرکاربرد دیگر ===
| |
|
| |
| * '''HEAD''': اشارهگر به Commit یا Branch فعلی.
| |
| * '''Stash''': ذخیرهی موقت تغییرات ناتموم بدون Commit کردن (<code>git stash</code> و <code>git stash pop</code>).
| |
| * '''Conflict''': وقتی دو Branch تغییرات متناقض دارن و Git نمیتونه خودکار Merge کنه.
| |
| * '''Fork''': کپی کردن یه Repo کامل به اکانت خودت روی GitHub (نه دستور Git، بلکه یه قابلیت پلتفرم).
| |
| * '''Pull Request (PR)''': درخواست برای ادغام تغییرات یه Fork/Branch به پروژه اصلی، معمولاً روی GitHub.
| |
|
| |
| === منابع بیشتر | Further Reading ===
| |
|
| |
| * [https://git-scm.com/doc مستندات رسمی Git]
| |
| * [https://learngitbranching.js.org/ آموزش تعاملی Git Branching]
| |