راهنمای کامل Git و GitHub
یک راهنمای جامع، گامبهگام و دوستانه برای یادگیری Git و GitHub — از مفاهیم پایه تا بهترین شیوهها و سناریوهای واقعی.
چرا Git و GitHub مهم هستند؟
- Git: یک سیستم کنترل نسخه توزیعشده (Distributed Version Control System). این ابزار به شما اجازه میدهد تغییرات در کد را ردیابی کنید، به نسخههای قبلی بازگردید و روی ویژگیهای مختلف به صورت ایزوله کار کنید.
- GitHub: یک پلتفرم آنلاین برای میزبانی repositoryهای Git. به کمک آن میتوانید با دیگران همکاری کنید، تغییرات را به اشتراک بگذارید، Pull Request بزنید و فرآیند توسعه را حرفهای مدیریت کنید.
بدون Git و GitHub، کار گروهی روی پروژهها بسیار پرریسک و گیجکننده میشود.
نصب Git
- وارد git-scm.com شوید.
- Git را برای سیستم عامل خود دانلود و با تنظیمات پیشفرض نصب کنید.
- نصب را بررسی کنید:
git --version
---
## پیکربندی اولیه Git
قبل از استفاده، باید هویت خود را تعریف کنید (برای commit ها):
```bash
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"برای بررسی تنظیمات:
git config --list📌 چرا لازم است؟ چون هر commit باید مشخص کند چه کسی آن را انجام داده است.
ایجاد اولین Repository محلی
- یک پوشه برای پروژه بسازید:
mkdir my-first-project
cd my-first-project- Git را در آن فعال کنید:
git init- یک فایل ابتدایی اضافه کنید:
echo "# My First Project 🚀" > README.md- تغییرات را ذخیره کنید:
git add .
git commit -m "first commit"📌 چرا لازم است؟ با این کار تغییرات پروژه ثبت و قابل بازگشت میشوند.
اتصال به GitHub
- وارد github.com شوید و یک New Repository بسازید.
- آن را به پروژه محلی متصل کنید:
git remote add origin <github-repository-address>
git push -u origin main📌 چرا لازم است؟ تا بتوانید کد را به اشتراک بگذارید و با دیگران همکاری کنید.
کار با Branch ها
Branchها اجازه میدهند روی ویژگیهای جدید کار کنید بدون اینکه کد اصلی خراب شود.
# ایجاد branch جدید
git checkout -b feature/login
# جابجایی بین branch ها
git checkout main
# ادغام branch با main
git merge feature/login
# حذف branch
git branch -d feature/loginمدیریت تعارضها (Merge Conflicts)
وقتی دو نفر روی یک خط از کد تغییر مینویسند، Git نمیداند کدام درست است. به همین دلیل فایل با نشانهگذاری conflict باز میشود.
بعد از ویرایش و رفع تعارض:
git add .
git commit -m "resolve merge conflict"📌 چرا لازم است؟ همکاری واقعی همیشه پر از تعارضهاست — یادگیری مدیریت آنها حیاتی است.
دستورات پیشرفته Git
مشاهده تاریخچه و تغییرات:
git log --oneline
git show <commit-hash>
git diff main..<branch-name>بازگردانی تغییرات:
git checkout -- <file>
git reset --hard <commit-hash>
git reset --soft <commit-hash>ذخیره تغییرات موقت (Stash):
git stash
git stash list
git stash pop
git stash dropTag کردن نسخهها:
git tag v1.0.0
git tag -a v1.0.0 -m "version 1.0.0"
git tag
git push origin --tags📌 چرا لازم است؟ برای مدیریت نسخهها (release ها) و بازگشت به یک نقطه مشخص در آینده.
بهترین شیوهها
نوشتن پیام Commit خوب
# خوب
git commit -m "feat: add authentication system"
# بهتر
git commit -m "feat: add authentication system with JWT
- Add authentication middleware
- Implement login/logout API
- Add validation for forms"انواع Commit بر اساس Conventional Commits
feat:→ ویژگی جدیدfix:→ رفع باگdocs:→ تغییرات مستنداتstyle:→ تغییرات ظاهری (بدون تغییر در منطق)refactor:→ بازنویسی کد بدون تغییر عملکردtest:→ اضافه کردن تستchore:→ کارهای نگهداری
کار با Remote ها
# اضافه کردن remote جدید
git remote add upstream https://github.com/original/repo.git
# مشاهده remote ها
git remote -v
# دریافت تغییرات
git fetch origin
git pull origin main
git fetch upstreamحل مشکلات رایج
فراموش کردن فایل در Commit
git add forgotten-file
git commit --amend --no-editتغییر پیام آخرین Commit
git commit --amend -m "new message"بازگردانی فایل حذف شده
git log --diff-filter=D --summary
git checkout <commit-hash> -- path/to/fileکار با GitHub
Fork کردن پروژه
- روی پروژه → Fork → کپی در حساب خود
Pull Request
- تغییرات را در branch جدا انجام دهید
- Push کنید و روی New Pull Request بزنید
Issues
- برای گزارش باگها
- برای درخواست ویژگی جدید
- برای پرسیدن سوال یا بحث
تمرینهای عملی
- یک repository بسازید و آن را clone کنید. فایل اضافه کنید، commit کنید و push کنید.
- Branch جدید بسازید، تغییرات بدهید و merge کنید.
- یک conflict بسازید و آن را حل کنید.
- سناریوی همکاری تیمی را شبیهسازی کنید.
- stash، tag و log را تمرین کنید.
نکات پیشرفته
Git Hooks
ls .git/hooks/
touch .git/hooks/pre-commit
chmod +x .git/hooks/pre-commitGit Aliases
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st statusGit Workflows
- Feature Branch Workflow → برای پروژههای کوچک
- Gitflow Workflow → برای تیمهای بزرگ با release management
- Trunk-Based Development → برای تیمهای سریع و پروژههای بزرگ
🎯 نقطه بررسی نهایی: پس از این راهنما شما میتوانید repository بسازید، branch ها را مدیریت کنید، تغییرات را commit کنید، با GitHub همکاری کنید و مثل حرفهایها conflict ها را حل کنید.
منابع مفید
راه اندازی ابزارها
راهنمای ساده و عملی برای نصب و راهاندازی ابزارهای ضروری فرانتاند، ایجاد یک پایه محکم برای شروع سفر کدنویسی شما.
HTML
مسیر گامبهگام بدون حاشیه برای HTML معنادار محکم، دسترسیپذیری بینقص، و پایههای مطمئن فرانتاند—گسترش یافته با بخشهای بیشتر HTML، مثالها و بهترین شیوهها برای همه.