التفريع والمساهمة
المساهمة في مشاريع المصدر المفتوح هي واحدة من أفضل الطرق لتحسين مهاراتك، وبناء محفظتك، ورد الجميل لمجتمع المطورين. فهم التفريع وسير عمل المساهمة أمر ضروري للمشاركة في التطوير التعاوني.
ما هو التفريع؟
التفريع (Fork) هو نسخة كاملة من مستودع تحت حساب GitHub الخاص بك. يسمح لك بتجربة التغييرات بحرية دون التأثير على المشروع الأصلي.
الفرق الرئيسي: الاستنساخ (Clone) ينشئ نسخة محلية على جهاز الكمبيوتر الخاص بك، بينما التفريع ينشئ نسخة بعيدة على حساب GitHub الخاص بك. عادةً ما تقوم بالتفريع أولاً، ثم تستنسخ التفريع الخاص بك.
التفريع مقابل الاستنساخ
فهم الفرق أمر بالغ الأهمية:
التفريع (GitHub):
- ينشئ نسخة على حساب GitHub الخاص بك
- يحافظ على الاتصال بالمستودع الأصلي
- يسمح لك باقتراح تغييرات عبر طلبات السحب
- لديك السيطرة الكاملة على التفريع الخاص بك
- يتم من خلال واجهة الويب GitHub
الاستنساخ (Git):
- ينشئ نسخة محلية على جهاز الكمبيوتر الخاص بك
- يقوم بتنزيل المستودع للعمل محلياً
- لا يوجد اتصال تلقائي بحساب GitHub الخاص بك
- يُستخدم لكل من المستودعات والتفريعات الخاصة بك
- يتم من خلال أمر git clone
كيفية تفريع مستودع
التفريع بسيط على GitHub:
1. انتقل إلى المستودع الذي تريد تفريعه
مثال: https://github.com/facebook/react
2. انقر على زر "Fork" في الزاوية العلوية اليمنى
3. ينشئ GitHub نسخة تحت حسابك
التفريع الخاص بك: https://github.com/YourUsername/react
4. الآن لديك السيطرة الكاملة على هذه النسخة
نصيحة احترافية: قبل التفريع، تحقق مما إذا كان المشروع يقبل المساهمات من خلال قراءة ملف CONTRIBUTING.md والتحقق من طلبات السحب المدمجة مؤخراً.
إعداد التفريع الخاص بك محلياً
بعد التفريع، استنسخ التفريع الخاص بك للعمل محلياً:
# استنسخ التفريع الخاص بك (وليس الأصلي)
git clone https://github.com/YourUsername/react.git
cd react
# تحقق من البعيد
git remote -v
# origin https://github.com/YourUsername/react.git (fetch)
# origin https://github.com/YourUsername/react.git (push)
إضافة البعيد المنبع
اربط التفريع الخاص بك بالمستودع الأصلي للبقاء متزامناً:
# أضف المستودع الأصلي كـ "upstream"
git remote add upstream https://github.com/facebook/react.git
# تحقق من البعيد
git remote -v
# origin https://github.com/YourUsername/react.git (fetch)
# origin https://github.com/YourUsername/react.git (push)
# upstream https://github.com/facebook/react.git (fetch)
# upstream https://github.com/facebook/react.git (push)
اصطلاح التسمية: "origin" يشير إلى التفريع الخاص بك، "upstream" يشير إلى المستودع الأصلي. هذا اصطلاح قياسي في المصدر المفتوح.
الحفاظ على تزامن التفريع الخاص بك
احتفظ بالتفريع الخاص بك محدثاً مع المشروع الأصلي:
# جلب أحدث التغييرات من المنبع
git fetch upstream
# التبديل إلى فرع main الخاص بك
git checkout main
# دمج تغييرات المنبع في main الخاص بك
git merge upstream/main
# دفع التحديثات إلى التفريع الخاص بك على GitHub
git push origin main
بدلاً من ذلك، استخدم إعادة التأسيس للحصول على تاريخ أنظف:
git fetch upstream
git checkout main
git rebase upstream/main
git push origin main --force-with-lease
مهم: قم دائماً بمزامنة التفريع الخاص بك قبل بدء عمل جديد لتجنب التعارضات والتأكد من أنك تعمل مع أحدث كود.
سير عمل المساهمة الكامل
إليك العملية خطوة بخطوة للمساهمة:
# الخطوة 1: تفريع المستودع على GitHub
# (انقر على زر Fork)
# الخطوة 2: استنسخ التفريع الخاص بك
git clone https://github.com/YourUsername/project.git
cd project
# الخطوة 3: أضف البعيد المنبع
git remote add upstream https://github.com/OriginalOwner/project.git
# الخطوة 4: إنشاء فرع ميزة
git checkout -b fix/typo-in-readme
# الخطوة 5: قم بإجراء التغييرات الخاصة بك
# تحرير الملفات...
# الخطوة 6: الالتزام برسالة واضحة
git add README.md
git commit -m "Fix typo in installation instructions"
# الخطوة 7: دفع إلى التفريع الخاص بك
git push origin fix/typo-in-readme
# الخطوة 8: إنشاء طلب سحب على GitHub
# انتقل إلى التفريع الخاص بك وانقر على "Compare & pull request"
# الخطوة 9: انتظر المراجعة ورد على التعليقات
# الخطوة 10: بعد الدمج، زامن ونظف
git checkout main
git fetch upstream
git merge upstream/main
git push origin main
git branch -d fix/typo-in-readme
أفضل ممارسات المساهمة الأولى
اجعل مساهمتك الأولى ذات قيمة:
قبل المساهمة:
✓ اقرأ CONTRIBUTING.md و CODE_OF_CONDUCT.md
✓ تحقق من المشكلات والـ PRs الموجودة (تجنب التكرار)
✓ ابحث عن تسميات "good first issue" أو "beginner-friendly"
✓ افهم أسلوب الترميز الخاص بالمشروع
✓ تأكد من أن الاختبارات تمر محلياً
عند المساهمة:
✓ ابدأ صغيراً (إصلاح الأخطاء الإملائية، تحسين التوثيق)
✓ اتبع تنسيق رسالة الالتزام الخاص بالمشروع
✓ اكتب أوصاف PR واضحة
✓ كن محترماً وصبوراً مع القائمين على الصيانة
✓ رد بسرعة على ملاحظات المراجعة
إيجاد مشاريع للمساهمة فيها
اكتشف مشاريع المصدر المفتوح التي تحتاج إلى مساعدة:
GitHub Explore:
https://github.com/explore
- تصفح المستودعات الرائجة
- تصفية حسب اللغة والموضوعات
Good First Issue:
https://goodfirstissue.dev/
- قائمة منسقة من المشكلات الصديقة للمبتدئين
First Timers Only:
https://www.firsttimersonly.com/
- موارد للمساهمين لأول مرة
Up For Grabs:
https://up-for-grabs.net/
- مشاريع بها مهام للمساهمين الجدد
GitHub Topics:
بحث: topic:hacktoberfest good-first-issue
آداب المصدر المفتوح
اتبع هذه الإرشادات لتكون مساهماً محترماً:
افعل:
✓ كن مهذباً ومحترفاً
✓ اطرح الأسئلة إذا كانت غير واضحة
✓ تقبل الملاحظات برشاقة
✓ أعط الفضل للآخرين
✓ اتبع إرشادات المشروع
✓ اختبر تغييراتك بدقة
✓ احتفظ بـ PRs مركزة وصغيرة
لا تفعل:
✗ تقديم مطالب أو توقع ردود فورية
✗ تقديم PRs منخفضة الجودة أو بريد مزعج
✗ تجاهل ملاحظات القائمين على الصيانة
✗ أخذ النقد شخصياً
✗ فرض نهجك المفضل
✗ إجراء PRs متعددة لنفس المشكلة
القاعدة الذهبية: القائمون على الصيانة هم متطوعون يعطون وقتهم. كن صبوراً ومحترماً وممتناً لجهودهم.
كتابة PRs صديقة للمساهمة
اجعل من السهل على القائمين على الصيانة مراجعة ودمج مساهمتك:
العنوان:
Fix: Correct typo in installation documentation
الوصف:
## ماذا
إصلاح خطأ إملائي في قسم التثبيت من README.md.
تم تغيير "installl" إلى "install" في السطر 23.
## لماذا
قد يربك الخطأ الإملائي المستخدمين الجدد الذين يتبعون دليل التثبيت.
## المشكلة ذات الصلة
Fixes #1234
## قائمة التحقق
- [x] قرأت CONTRIBUTING.md
- [x] اتبعت إرشادات أسلوب الكود
- [x] جميع الاختبارات تمر محلياً
- [x] تم تحديث التوثيق إذا لزم الأمر
- [x] أضفت اختبارات للوظائف الجديدة (لا ينطبق)
## لقطات الشاشة
[إذا كان ذلك ممكناً]
الرد على ملاحظات المراجعة
تعامل مع الملاحظات بشكل احترافي:
مثال على رد إيجابي:
"شكراً على الملاحظات! لقد قمت بتحديث الكود لاستخدام النهج
المقترح. يرجى إعلامي إذا كان هناك أي شيء آخر يحتاج
إلى تغيير."
عندما تختلف:
"أفهم قلقك. اخترت هذا النهج لأن [السبب].
ومع ذلك، أنا منفتح على البدائل. ما رأيك في [الخيار]؟"
عندما تكون غير متأكد:
"لست متأكداً من أنني أفهم المشكلة. هل يمكنك تقديم مثال
أو الإشارة إلى التوثيق؟ أود أن أتعلم أكثر."
بعد دمج PR الخاص بك
احتفل ونظف:
# زامن التفريع الخاص بك مع المنبع
git checkout main
git fetch upstream
git merge upstream/main
git push origin main
# احذف فرع الميزة الخاص بك محلياً
git branch -d fix/typo-in-readme
# احذف الفرع البعيد (عادةً ما يفعل GitHub هذا تلقائياً)
git push origin --delete fix/typo-in-readme
# احتفل! أنت الآن مساهم في المصدر المفتوح!
بناء محفظة المصدر المفتوح الخاصة بك
تتبع وأظهر مساهماتك:
في سيرتك الذاتية/محفظتك:
- رابط إلى ملف GitHub الخاص بك
- سلط الضوء على المساهمات الهامة
- اذكر المشاريع التي ساهمت فيها
- قم بتضمين أي أدوار صيانة
ملف GitHub الشخصي:
- ثبت أفضل مساهماتك
- اكتب سيرة ذاتية مقنعة
- قم بتضمين روابط إلى عملك
- حافظ على نشاط رسم المساهمة
أمثلة على المساهمة:
- "ساهمت في إصلاحات الأخطاء في React (10k+ نجمة)"
- "حسّنت التوثيق لـ Vue.js"
- "صائن [اسم المشروع]"
- "مساهم نشط في المصدر المفتوح منذ 2023"
أن تصبح صائناً
التقدم من مساهم إلى صائن:
الطريق إلى الصائن:
1. قدم مساهمات متسقة وعالية الجودة
2. ساعد في مراجعة PRs الآخرين
3. أجب على المشكلات وساعد المستخدمين
4. حسّن التوثيق
5. عبر عن اهتمامك بالصيانة
6. اكسب ثقة الصائنين الحاليين
7. احصل على صلاحيات الصائن/الملتزم
مسؤوليات الصائن:
- مراجعة ودمج طلبات السحب
- فرز والرد على المشكلات
- تطبيق مدونة السلوك
- اتخاذ قرارات معمارية
- إصدار إصدارات جديدة
- توجيه المساهمين الجدد
تمرين عملي:
المهمة: قدم مساهمتك الأولى في المصدر المفتوح
- ابحث عن مشروع على GitHub به تسمية "good first issue"
- قم بتفريع المستودع إلى حسابك
- استنسخ التفريع الخاص بك محلياً
- أضف البعيد المنبع
- أنشئ فرع ميزة للإصلاح الخاص بك
- قم بإجراء التغييرات والالتزام بها
- ادفع إلى التفريع الخاص بك
- أنشئ طلب سحب مع وصف مفصل
- رد على أي ملاحظات مراجعة
- بعد الدمج (أو الإغلاق)، زامن التفريع الخاص بك
النتيجة المتوقعة: ستحصل على خبرة عملية مع سير عمل المساهمة الكامل في المصدر المفتوح.
سيناريوهات التفريع الشائعة
السيناريو 1: المساهمة في مشروع
تفريع → استنساخ → فرع → التزام → دفع → طلب سحب
السيناريو 2: إنشاء نسختك الخاصة
تفريع → تعديل واسع → صيانة مستقلة
السيناريو 3: التجربة بأمان
تفريع → تجربة ميزات جديدة → حذف إذا لم تنجح
السيناريو 4: المزامنة مع المنبع
جلب المنبع → دمج/إعادة التأسيس → دفع إلى التفريع الخاص بك
الملخص
في هذا الدرس، تعلمت:
- التفريع ينشئ نسخة شخصية من مستودع على GitHub
- التفريع مقابل الاستنساخ: التفريع بعيد، الاستنساخ محلي
- البعيد المنبع يربط التفريع الخاص بك بالمستودع الأصلي
- سير عمل المساهمة الكامل: تفريع → استنساخ → فرع → التزام → PR
- احتفظ بالتفريع الخاص بك متزامناً مع المنبع بانتظام
- آداب المصدر المفتوح: كن محترماً وصبوراً
- المشكلات الأولى الجيدة مثالية للمبتدئين
- بناء محفظة المصدر المفتوح يعزز مسيرتك المهنية
التالي: في الدرس التالي، سنستكشف GitHub Actions لأتمتة سير عمل التطوير الخاص بك!