Skip to Content

 

`


github , fork  & pull request

آشنایی با github و ویژگی های  Fork و Pull Request



مقدمه


در پروژه‌های نرم‌افزاری، مخصوصاً پروژه‌های متن‌باز (Open Source)، چندین توسعه‌دهنده به طور همزمان روی یک پروژه کار می‌کنند. برای مدیریت تغییرات کد و همکاری بین توسعه‌دهندگان از Git و GitHub استفاده می‌شود.

  • Git یک سیستم کنترل نسخه (Version Control System) است.
  • GitHub یک سرویس آنلاین برای نگهداری مخازن Git و همکاری تیمی است.

به کمک GitHub می‌توان تغییرات را ثبت کرد، روی پروژه‌های دیگر مشارکت داشت و بدون ایجاد تداخل با کد اصلی، ویژگی‌های جدید یا رفع اشکال‌ها را پیاده‌سازی کرد.



Fork چیست؟


Fork به معنی ایجاد یک کپی کامل از مخزن (Repository) شخص دیگری در حساب GitHub خودمان است.

فرض کنید می‌خواهید در پروژه OCA یا Odoo مشارکت کنید اما اجازه نوشتن مستقیم روی مخزن اصلی را ندارید. در این حالت ابتدا از پروژه Fork می‌گیرید.

بعد از Fork:

  • یک نسخه از پروژه داخل اکانت GitHub شما ایجاد می‌شود.
  • می‌توانید هر تغییری که خواستید روی آن انجام دهید.
  • تغییرات شما روی پروژه اصلی تأثیری نخواهد داشت.


مثال

فرض کنید پروژه اصلی این است:

                                        github.com/OCA/product-attribute

بعد از Fork، پروژه زیر برای شما ساخته می‌شود:

                               github.com/YourUsername/product-attribute

اکنون می‌توانید آزادانه روی پروژه خود کار کنید.



چرا از Fork استفاده می‌کنیم؟


دلایل اصلی استفاده از Fork عبارت‌اند از:

  • نداشتن دسترسی مستقیم به پروژه اصلی
  • امکان توسعه مستقل
  • جلوگیری از آسیب زدن به پروژه اصلی
  • مشارکت در پروژه‌های Open Source


چگونه Fork انجام دهیم؟


۱. وارد صفحه پروژه در GitHub شوید.

۲. روی دکمه Fork کلیک کنید.

۳. GitHub یک نسخه از پروژه را داخل اکانت شما ایجاد می‌کند.

۴. سپس پروژه را Clone کنید:

          			​    git clone https://github.com/YourUsername/project.git



Clone چیست؟


Clone یعنی دانلود Repository روی کامپیوتر.

مثال:

                             git clone https://github.com/username/project.git



6. تفاوت Fork ، Clone و Branch 


یک جدول بگذار:

مفهومتوضیح
Repositoryپروژه روی GitHub
Forkکپی Repository در اکانت GitHub شما
Cloneدانلود Repository روی کامپیوتر
Branchشاخه‌ای برای توسعه مستقل



Pull Request چیست؟


بعد از اینکه تغییرات خود را روی Fork انجام دادید، باید از صاحبان پروژه بخواهید تغییرات شما را بررسی و در صورت تأیید وارد پروژه اصلی کنند.

به این درخواست Pull Request (PR) گفته می‌شود.

در واقع Pull Request یعنی:

"من تغییراتی انجام داده‌ام؛ لطفاً آن‌ها را بررسی کنید و در صورت مناسب بودن به پروژه اصلی اضافه کنید."



Pull Request چه مراحلی دارد؟


فرآیند معمول به این شکل است:

  1. Fork گرفتن از پروژه
  2. Clone کردن Fork روی سیستم
  3. ایجاد Branch جدید
  4. اعمال تغییرات
  5. Commit کردن تغییرات
  6. Push کردن Branch به GitHub
  7. ایجاد Pull Request
  8. بررسی توسط Maintainer
  9. Merge شدن Pull Request در صورت تأیید



چگونه Pull Request ایجاد کنیم؟


بعد از انجام تغییرات؛

ابتدا فایل‌ها را اضافه کنید:

                                                               git add .

سپس Commit بگیرید:

                                               "git commit -m "Fix README typo

تغییرات را Push کنید:

                                                    git push origin my-feature

اکنون وارد GitHub شوید.

روی دکمه Compare & Pull Request کلیک کنید.

عنوان و توضیحات Pull Request را بنویسید.

در نهایت روی Create Pull Request کلیک کنید.



تفاوت Fork و Pull Request


                              Fork                       Pull Request
ایجاد یک نسخه از پروژه در حساب شخصیدرخواست اضافه شدن تغییرات به پروژه اصلی
قبل از شروع توسعه انجام می‌شودبعد از پایان توسعه انجام می‌شود
یک کپی مستقل از پروژه ایجاد می‌کندتغییرات را برای بررسی ارسال می‌کند
مالک پروژه اصلی تغییری نمی‌بیندمالک پروژه تغییرات را بررسی می‌کند




مثال کامل


فرض کنید می‌خواهید در پروژه OCA مشارکت کنید.

  1. پروژه را Fork می‌کنید.
  2. Fork را روی سیستم Clone می‌کنید.
  3. یک Branch جدید می‌سازید.
  4. باگ را برطرف می‌کنید.
  5. Commit می‌گیرید.
  6. تغییرات را Push می‌کنید.
  7. Pull Request ایجاد می‌کنید.
  8. Maintainer پروژه تغییرات را بررسی می‌کند.
  9. اگر همه چیز درست باشد، Pull Request Merge می‌شود  و تغییرات شما وارد پروژه اصلی خواهد شد.



مزایای استفاده از Fork و Pull Request


  • همکاری آسان بین توسعه‌دهندگان
  • جلوگیری از تغییر مستقیم در پروژه اصلی
  • امکان بررسی کیفیت کد قبل از Merge
  • ثبت تاریخچه کامل تغییرات
  • افزایش کیفیت پروژه‌های متن‌باز



جمع‌ بندی


GitHub بستری برای همکاری تیمی و مدیریت پروژه‌های نرم‌افزاری است. زمانی که دسترسی مستقیم به یک مخزن نداریم، ابتدا از آن Fork می‌گیریم تا نسخه‌ای مستقل در حساب خود داشته باشیم. پس از اعمال تغییرات، با ایجاد Pull Request از مدیران پروژه درخواست می‌کنیم که تغییرات ما را بررسی کرده و در صورت تأیید، به مخزن اصلی اضافه کنند. این فرآیند استاندارد همکاری در بسیاری از پروژه‌های متن‌باز مانند Odoo و OCA است و باعث می‌شود کیفیت کد حفظ شده و توسعه پروژه به صورت منظم و قابل کنترل انجام شود.