← بازگشت به صفحه اصلی

GitHub چیست؟

اگه تا حالا خواستی یه پروژه‌ی کدنویسی رو با بقیه به اشتراک بذاری، یا دنبال سورس یه ابزار متن‌باز گشتی، حتماً به GitHub خوردی. تو این مقاله یاد می‌گیری GitHub دقیقاً چیه، چه فرقی با Git داره، و مفاهیم پایه‌ای‌ای که برای کار باهاش لازمه.

فرق Git و GitHub چیه؟

خیلی‌ها این دوتا رو با هم قاطی می‌کنن، ولی کاملاً چیزهای متفاوتی هستن:

  • Git یه سیستم کنترل نسخه (Version Control System) هست که روی کامپیوتر خودت نصب می‌شه. کارش اینه که تغییرات فایل‌های پروژه‌ت رو در طول زمان ثبت و ردیابی کنه.
  • GitHub یه پلتفرم آنلاینه که پروژه‌های Git رو میزبانی می‌کنه. یعنی به‌جای اینکه فقط روی کامپیوتر خودت تاریخچه‌ی پروژه رو داشته باشی، می‌تونی همون پروژه رو آپلود کنی رو GitHub تا هم پشتیبان (بک‌آپ) داشته باشه، هم بقیه بتونن ببیننش یا باهات همکاری کنن.

خلاصه: Git ابزاره، GitHub جاییه که با اون ابزار کار می‌کنی و پروژه‌تو نگه می‌داری.

چرا GitHub به وجود اومد؟

قبل از Git، تیم‌های برنامه‌نویسی معمولاً فایل‌های پروژه رو دستی جابه‌جا می‌کردن — مثلاً با ایمیل یا فلش‌مموری. این روش چند تا مشکل بزرگ داشت:

  • هیچ تاریخچه‌ای از تغییرات نبود؛ اگه یه چیزی خراب می‌شد، برگردوندنش سخت بود
  • دو نفر نمی‌تونستن هم‌زمان روی یه فایل کار کنن بدون اینکه کار همدیگه رو پاک کنن

Git دقیقاً برای حل همین مشکل ساخته شد: با ثبت هر تغییر به‌صورت یه کامیت، و امکان کار هم‌زمان چند نفر روی برنچ‌های جدا بدون از بین رفتن کار همدیگه.

ولی Git به‌تنهایی فقط روی کامپیوتر خودت اجرا می‌شه؛ هنوز یه جای مرکزی برای اشتراک‌گذاری و دیدن پروژه بین چند نفر لازم بود. اینجاست که GitHub وارد می‌شه: یه نسخه‌ی آنلاین از همون تاریخچه‌ای که Git می‌سازه، به‌علاوه‌ی امکاناتی مثل بررسی تغییرات دیگران، بحث درباره‌ی پروژه (Issue) و درخواست ادغام تغییرات (Pull Request) که تو ادامه‌ی این مقاله باهاشون آشنا می‌شی.

مفاهیم پایه‌ای GitHub

ریپازیتوری (Repository)

ریپازیتوری (یا به‌اختصار «ریپو») همون پوشه‌ی پروژه‌ته که رو GitHub میزبانی می‌شه. همه‌ی فایل‌ها، تاریخچه‌ی تغییرات و تنظیمات پروژه داخل ریپازیتوری قرار دارن. مثلاً همین سایتی که الان داری می‌بینی، خودش یه ریپازیتوریه.

کامیت (Commit)

هر بار که یه تغییر تو پروژه‌ت انجام می‌دی و ذخیره‌ش می‌کنی، بهش می‌گن یه کامیت. هر کامیت یه پیام کوتاه هم داره که توضیح می‌ده چه تغییری دادی — مثلاً «اصلاح باگ هدر» یا «اضافه کردن صفحه‌ی جدید».

Commit message: اضافه کردن مقاله‌ی GitHub

برنچ (Branch)

برنچ یه نسخه‌ی جدا از پروژه‌ته که می‌تونی توش تغییرات جدید رو امتحان کنی، بدون اینکه نسخه‌ی اصلی (که معمولاً بهش می‌گن main) خراب بشه. وقتی مطمئن شدی تغییراتت درسته، می‌تونی برنچ رو با نسخه‌ی اصلی ادغام (merge) کنی.

کلون، پوش و پول

سه‌تا از پرکاربردترین عملیات‌ها:

  • Clone: کپی کردن یه ریپازیتوری از GitHub روی کامپیوتر خودت
  • Push: فرستادن تغییراتی که رو کامپیوتر خودت انجام دادی، به GitHub
  • Pull: گرفتن آخرین تغییراتی که رو GitHub انجام شده، به کامپیوتر خودت

ایشو و پول ریکوئست

Issue یه جور تیکت یا یادداشته که برای گزارش باگ، پیشنهاد ویژگی جدید، یا هر بحثی درباره‌ی پروژه استفاده می‌شه. Pull Request (که بهش PR هم می‌گن) درخواستیه که وقتی رو یه برنچ جدا کار کردی، می‌فرستی تا تغییراتت بررسی و با نسخه‌ی اصلی پروژه ادغام بشه.

چطور شروع کنیم؟

برای شروع کار با GitHub، این قدم‌ها کافیه:

  1. تو github.com یه اکانت بساز
  2. یه ریپازیتوری جدید بساز (دکمه‌ی «New repository»)
  3. فایل‌های پروژه‌تو یا مستقیم از طریق وب‌سایت آپلود کن، یا با نصب Git رو کامپیوترت و دستورهایی مثل git add، git commit و git push کار کن

همین سایتی که الان داری می‌خونی هم دقیقاً همین‌جوری ساخته شده — فایل‌های HTML و CSS مستقیم از طریق رابط وب GitHub آپلود و ویرایش شدن.

کجاها از GitHub استفاده می‌شه؟

  • میزبانی کد پروژه‌ها: چه پروژه‌ی شخصی، چه تیمی
  • GitHub Pages: میزبانی رایگان سایت‌های استاتیک، دقیقاً همون چیزی که این سایت ازش استفاده می‌کنه
  • همکاری تیمی: چند نفر می‌تونن هم‌زمان و بدون تداخل رو یه پروژه کار کنن
  • پروژه‌های متن‌باز (Open Source): هزاران کتابخونه و ابزار معروف (مثل React، VS Code) روی GitHub میزبانی می‌شن

این مقاله بخش اول از یه مجموعه‌ست. بخش‌های بعدی:

جمع‌بندی

GitHub یکی از پرکاربردترین ابزارهای دنیای برنامه‌نویسیه — هم برای ذخیره و نسخه‌بندی کد، هم برای همکاری با بقیه، و هم برای میزبانی پروژه‌هایی مثل همین سایت. یادگیری مفاهیم پایه‌ش (ریپازیتوری، کامیت، برنچ) کافیه تا بتونی شروع کنی؛ بقیه‌شو با تمرین و استفاده‌ی مداوم یاد می‌گیری.

← بازگشت به صفحه اصلی