معمولاً توسعهدهندهٔ اصلی یک پروژهٔ اپنسورس اجازهٔ آپدیت کردن بِرَنچ اصلی را نخواهد داد و از همین روی میباید با مفهوم Fork آشنا شویم. فورک کردن را میتوان بدین صورت تعبیر کرد که یک کپی کامل از پروژهای که دولوپر دیگری روی آن کار کرده را روی سیستم لوکال خود داشته باشیم که اساساً با این کار میتوان در پروژههای اپنسورس سایر توسعهدهندگان مشارکت داشت. در واقع، با فورک کردن یک پروژه، یک کپی کامل از آن پروژه که متعلق به اکانت توسعهدهندهٔ دیگری است روی اکانت خودمان ایجاد خواهد شد.
برای درک بهتر سازوکار این کار، فرض کنیم که قصد داریم تا لایبرری اپنسورس جاوااسکریپتی awesome-js-sauce را فورک کنیم که برای این منظور، ابتدا وارد ریپازیتوری این پروژه در گیتهاب شده سپس روی دکمهٔ Fork کلیک میکنیم. از این پس، یک نسخهٔ کامل از این پروژه روی اکانت شخصیمان در گیتهاب موجود خواهد شد و اکنون میتوانیم آن را به روشی که پیش از این آموختیم کلون کنیم:
/var/www$ git clone https://github.com/behzadmoradi/awesome-js-sauce.git
Cloning into 'awesome-js-sauce'...
remote: Enumerating objects: 15, done.
remote: Total 15 (delta 0), reused 0 (delta 0), pack-reused 15
Unpacking objects: 100% (15/15), done.
پس از تکمیل این پروسه، در مسیر var/www/
در سیستمعامل اوبونتو خواهیم دید که فولدر جدیدی تحت عنوان awesome-js-sauce
ساخته شده است. حال تغییر کوچکی در این پروژه انجام داده، آن را کامیت کرده و در نهایت کلیهٔ تغییرات را پوش میکنیم.
در ادامه، قصد داریم تا دولوپر اصلی این پروژه را از تغییرات مد نظرمان مطلع سازیم که برای همین منظور، در صفحهٔ اصلی این ریپو در اکانت شخصیمان، روی دکمهٔ New pull request کلیک میکنیم و بالتبع درخواستی برای توسعهدهندهٔ اصلی ارسال میگردد تا تغییراتمان را مشاهده کرده و در صورت تمایل آنها را با شاخهٔ اصلی (مَستر) ادغام کند و این همان روشی است که پروژههای بزرگ اپنسورس همچون فریمورک Ruby on Rails ،Laravel و ... روزبهروز بیشتر توسعه مییابند.