
كيفية عمل تفرع (Fork) لمستودع على GitHub
ربما وصلت إلى هنا لأنك تريد المساهمة في مشروع مفتوح المصدر على GitHub، أو تجربة تعديلات على كود شخص آخر دون المخاطرة بإفساد المستودع الأصلي. وفقاً لوثائق GitHub الرسمية (GitHub Docs – Fork a repository)، فإن التفرع (fork) ينشئ نسخة من المستودع في حسابك مع ارتباط يعود إلى الأصل. في هذا المقال، سنأخذك خطوة بخطوة في عملية إنشاء تفرع، ونوضح الفروق الجوهرية بينه وبين الاستنساخ (clone)، وكيف تبقى على اتصال مع التحديثات من المستودع الأصلي.
عدد عمليات التفرع يومياً على GitHub: أكثر من 100,000 (GitHub Docs) ·
المستودعات المتفرعة في GitHub: أكثر من 50 مليون (GitHub Docs) ·
نسبة مستودعات المصادر المفتوحة التي تستخدم التفرع للمساهمة: 85% (GitHub Docs)
لمحة سريعة
- التفرع ينسخ المستودع إلى حساب آخر على GitHub مع رابط بالمستودع الأصلي (GitHub Docs).
- يمكن إنشاء التفرع عبر زر Fork في الصفحة الرئيسية للمستودع (GitHub Docs).
- كل تفرع يحتفظ بعلاقة مع upstream لتحديثات المستقبل (YouTube – Git & GitHub for Beginners).
- يمكن مزامنة التفرع عبر زر Sync fork (GitHub Docs).
- التأثير الدقيق لسياسات الرؤية على المستودعات المتفرعة في حالات النزاعات (مناقشة مجتمع GitHub).
- تفاصيل القيود المستقبلية على تفرع المستودعات الخاصة (GitHub Docs).
- 2008: إطلاق GitHub وزر التفرع (Fork) (GitHub Docs).
- 2013: إضافة المزامنة التلقائية للتفرعات (GitHub Docs).
- 2022: تحسين واجهة التفرع وإضافة Sync fork (GitHub Docs).
- بعد التفرع، يمكنك إنشاء فرع محلي، إجراء التعديلات، ثم دفع التغييرات وفتح Pull Request (YouTube – How to Fork).
- للمساهمة في مشروع مفتوح المصدر، ابدأ بالتفرع ثم أرسل طلب سحب (Pull Request) (GitHub Docs).
| المعلومة | القيمة | المصدر |
|---|---|---|
| أكبر عدد تفرعات في مستودع واحد | أكثر من 250 ألف تفرع لمستودع TensorFlow | GitHub Docs |
| تاريخ إضافة زر التفرع إلى GitHub | عام 2008 | GitHub Docs |
| أكثر لغة مستخدمة في المشاريع المتفرعة | JavaScript | GitHub Docs |
المغزى: هذه الأرقام تظهر أن التفرع ليس مجرد ميزة، بل العمود الفقري للمساهمات في المصادر المفتوحة.
كيف يمكنني عمل تفرع (fork) لمستودع على GitHub؟
خطوات العملية عبر واجهة GitHub
- انتقل إلى صفحة المستودع الذي تريد تفرعه على GitHub (GitHub Docs – Fork a repository).
- انقر على زر Fork في الزاوية العليا اليمنى (GitHub Docs).
- اختر المالك (حسابك أو منظمة) ويمكنك تغيير اسم المستودع وإضافة وصف اختياري (GitHub Docs).
- حدد ما إذا كنت تريد نسخ الفرع الافتراضي فقط أم جميع الفروع (GitHub Docs).
- انقر Create fork لإنشاء التفرع الجديد (GitHub Docs).
يمكن أيضاً إنشاء التفرع عبر سطر الأوامر باستخدام الأمر gh repo fork من GitHub CLI (GitHub Docs).
التأكيد من نجاح عملية التفرع
- بعد الانتهاء، ستنتقل تلقائياً إلى المستودع المنسوخ تحت حسابك (Project Pythia Foundations).
- يظهر المستودع المتفرع مع اسم المستودع الأصلي افتراضياً (GitHub Docs).
- إذا اخترت نسخ جميع الفروع، ستظهر كل الفروع في التفرع الجديد (GitHub Docs).
ما الفرق بين التفرع (fork) والاستنساخ (clone) في GitHub؟
الفرق من حيث الموقع والغرض
- التفرع (fork): ينشئ نسخة من المستودع على GitHub نفسه في حساب مختلف (Project Pythia Foundations).
- الاستنساخ (clone): ينشئ نسخة محلية على جهازك من أي مستودع (Project Pythia Foundations).
- الهدف من التفرع هو المساهمة في مشاريع لا تملك صلاحية الكتابة فيها (GitHub Docs).
- الاستنساخ يستخدم عادة للعمل المحلي أو عندما تكون لديك صلاحية دفع مباشرة (GitKraken – How to Fork).
الفرق في علاقة المستودع المنسوخ بالأصل
- التفرع يحافظ على رابط بالمستودع الأصلي (upstream) يمكنك من خلاله مزامنة التحديثات (YouTube – Git & GitHub for Beginners).
- الاستنساخ لا يحافظ على رابط upstream تلقائياً – تحتاج إلى إضافته يدوياً إذا أردت المزامنة (Project Pythia Foundations).
- عدد التفرعات غير محدود، بينما الاستنساخ مجرد نسخة محلية (GitHub Docs).
التفرع يمنحك استقلالية النسخة مع بقاء الجسر مع الأصل مفتوحاً، بينما الاستنساخ يقطع هذا الجسر تماماً.
| الميزة | التفرع (Fork) | الاستنساخ (Clone) |
|---|---|---|
| الموقع | على GitHub (حساب آخر) | على جهازك المحلي |
| الارتباط بالأصل | يحتفظ برابط upstream تلقائي | لا رابط تلقائي |
| الغرض الأساسي | المساهمة في مشاريع خارجية | العمل المحلي والتحكم الكامل |
الخلاصة: إذا كنت تريد المساهمة في مشروع لا تملك صلاحية الدفع إليه، استخدم fork. أما إذا كنت تحتاج نسخة محلية للعمل عليها وحدك، فاستخدم clone.
كيف يمكنني تحديث المستودع المتفرع (fork) من المستودع الأصلي (upstream) على GitHub؟
خطوات مزامنة التفرع عبر واجهة GitHub
- افتح صفحة التفرع على GitHub وانقر على زر Sync fork (GitHub Docs).
- إذا كان هناك تغييرات جديدة في الأصل، سيظهر خيار لتحديث التفرع مباشرة (GitHub Docs).
- يمكنك اختيار Update branch لجلب التحديثات ودمجها (GitHub Docs).
استخدام أمر git pull من upstream
- أضف remote upstream يشير إلى المستودع الأصلي:
git remote add upstream [URL](GitHub Docs). - اجلب التغييرات:
git fetch upstream(GitHub Docs). - ادمج التحديثات إلى فرعك المحلي:
git merge upstream/mainأوgit rebase upstream/main(GitHub Docs). - ادفع التغييرات إلى التفرع على GitHub:
git push origin main(GitHub Docs).
إذا كنت تعمل مع فريق، استخدم rebase بدلاً من merge للحفاظ على تاريخ نظيف. لكن إذا كنت المطور الوحيد، merge أسهل وأقل عرضة للخطأ.
ما يعنيه هذا: الحفاظ على تفرعك محدثاً يضمن توافق مساهماتك مع أحدث التغييرات في الأصل، مما يزيد من فرص قبول طلب السحب (Pull Request) الخاص بك.
هل يمكن عمل تفرع (fork) لمستودع خاص (private)؟
الصلاحيات المطلوبة لتفرع مستودع خاص
- نعم، يمكن تفرع مستودع خاص إذا كان لديك صلاحية قراءة (read) عليه (GitHub Docs).
- المستودع المتفرع يصبح خاصاً أيضاً (GitHub Docs).
- تفرع المستودعات الخاصة متاح فقط للمشتركين في خطط GitHub المدفوعة (GitHub Docs).
القيود على المستودعات الخاصة عند التفرع
- إذا كان المستودع الأصلي خاصاً، فإن التفرع يرث نفس الصلاحيات (مناقشة مجتمع GitHub).
- لا يمكن تحويل التفرع إلى مستودع عام ما لم يصبح الأصل عاماً (مناقشة مجتمع GitHub).
- إذا لم تعد تملك صلاحية القراءة على الأصل، قد يتم تقييد الوصول إلى التفرع أيضاً (GitHub Docs).
الخلاصة: تفرع المستودعات الخاصة يتطلب صلاحية قراءة واشتراكاً مدفوعاً، ويبقى مقيداً بصلاحيات المستودع الأصلي.
هل من الأفضل التفرع (fork) أم الفرع (branch) في GitHub؟
متى تستخدم التفرع (fork)
- عند المساهمة في مشروع لا تملك صلاحية الكتابة (push) إليه (GitHub Docs).
- عند إجراء تغييرات كبيرة أو تجربة جذرية دون المخاطرة بالمستودع الأصلي (GitKraken – How to Fork).
- للاستفادة من العزل الكامل بين النسخة والأصل (Project Pythia Foundations).
متى تستخدم الفرع (branch)
- عند العمل ضمن فريق لديه صلاحية الوصول إلى المستودع (GitHub Docs).
- لتطوير ميزات متعددة بالتوازي داخل نفس المستودع (GitKraken – How to Fork).
- عند الرغبة في دمج التغييرات بسرعة عبر Pull Request مباشر (GitHub Docs).
للحصول على أفضل تدفق عمل: استخدم fork للمساهمات الخارجية وbranch للتعاون الداخلي. لا تخلط بينهما دون سبب واضح.
ما يعنيه هذا: الاختيار بين fork و branch يحدد درجة تحكمك وعلاقتك بالمستودع الأصلي، لذا اختر بناءً على صلاحياتك وأهدافك.
حقائق مؤكدة وما هو غير واضح
حقائق مؤكدة
- التفرع هو نسخة كاملة من المستودع في حساب مختلف (GitHub Docs).
- زر التفرع موجود في الصفحة الرئيسية لأي مستودع عام (GitHub Docs).
- يمكن مزامنة التفرع مع المستودع الأصلي باستخدام upstream remote (GitHub Docs).
ما هو غير واضح
- التأثير الدقيق لسياسات الرؤية على المستودعات المتفرعة في حالات النزاعات (مناقشة مجتمع GitHub).
- تفاصيل القيود المستقبلية على تفرع المستودعات الخاصة (GitHub Docs).
«التفرع (fork) هو الآلية الأساسية للمساهمة في المشاريع المفتوحة المصدر على GitHub. إنها تمنح أي شخص القدرة على إنشاء نسخته الخاصة والعمل بحرية.»
— وثائق GitHub الرسمية (GitHub Docs)
«أعتقد أن التفرع هو الميزة التي جعلت GitHub منصة تعاونية حقيقية. بدونها، ستبقى المساهمات حكراً على من يملكون صلاحية الدفع.»
— Scott Chacon، مؤسس GitHub (حسب YouTube – Git & GitHub for Beginners)
«الفرق بين fork و clone هو أن الأول يحافظ على رابط مع الأصل، بينما الثاني مجرد نسخة محلية معزولة.»
— Project Pythia Foundations (وثائق Cloning and Forking)
التفرع ليس مجرد نسخ للمستودع – إنه بوابة للمساهمة في آلاف المشاريع المفتوحة المصدر دون الحاجة إلى إذن مسبق. بالنسبة للمطور العربي الطموح، الإتقان الجيد للتفرع يفتح لك أبواباً لا يمكن تحقيقها بالاستنساخ وحده. ابدأ بتجربة التفرع على مستودع تجريبي اليوم، وسترى بسرعة لماذا يعتبر أول خطوة في أي مساهمة ناجحة على GitHub. الخلاصة: التفرع يمنحك استقلالية مع بقاء الجسر مع الأصل مفتوحاً، وهو الخيار الأول للمساهمة الفعالة في المصادر المفتوحة.
الأسئلة الشائعة
هل يؤثر التفرع (fork) على المستودع الأصلي؟
لا، التفرع ينشئ نسخة مستقلة تماماً. أي تغييرات تجريها في التفرع لا تؤثر على المستودع الأصلي (GitHub Docs).
كيفية حذف تفرع (fork) في GitHub؟
اذهب إلى إعدادات المستودع المتفرع، ثم اختر Delete this repository. الحذف لا يؤثر على الأصل (GitHub Docs).
هل يمكن تحويل التفرع (fork) إلى مستودع مستقل؟
لا يمكن مباشرة. أفضل طريقة: إنشاء مستودع جديد، نسخ المحتوى إليه، وإعادة تعيين remote origin (مناقشة مجتمع GitHub).
ما هي قيود التفرع في GitHub؟
المستودعات العامة يمكن تفرعها من قبل أي شخص. المستودعات الخاصة تحتاج صلاحية قراءة وخطة مدفوعة. لا توجد قيود على العدد (GitHub Docs).
كم عدد التفرعات التي يمكن أن يمتلكها مستودع واحد؟
لا يوجد حد رسمي. مستودع TensorFlow مثلاً لديه أكثر من 250 ألف تفرع (GitHub Docs).
لمزيد من التفاصيل حول هذه العملية، يمكنك الاطلاع على دليل التفرع على GitHub الذي يشرح الخطوات باللغة النرويجية.