لو فاكر إن GitHub مجرد موقع ترفع عليه ملفات المشروع فأنت شايف جزء صغير من فائدته الموقع بيساعدك تحفظ تاريخ الكود وتراجع التغييرات وتتعاون مع غيرك وتتابع المطلوب تنفيذه

هنشرح الفكرة بمثال فريق بيطور موقع مكتبة كتب فيه شخص بيضيف البحث وشخص تاني بيصلح صفحة تسجيل الدخول وكل واحد محتاج يشتغل من غير ما يلخبط شغل التاني

الفرق بين Git و GitHub

ال Git أداة لإدارة تاريخ التغييرات تقدر تستخدمها على جهازك من غير حساب GitHub أما GitHub فهو منصة بتستضيف المستودعات وبتضيف أدوات للمراجعة والتعاون وإدارة المشروع

ال Repository هو المستودع اللي بيضم ملفات المشروع وتاريخه وال Commit بيسجل حالة من التغييرات علشان تقدر تراجعها بعدين رفع الملفات من غير فهم Git مش هيخليك تستفيد من تاريخ المشروع بالشكل المطلوب

اختيار مين يقدر يشوف المشروع

تقدر تعمل مستودع Public علشان الناس تشوفه أو Private وتقصر الوصول على الأشخاص المسموح لهم حسب إعدادات الصلاحيات راجع الاختيار قبل رفع ملفات تخص عميل أو شركة

ظهور الكود للعامة مش معناه إنك تقدر تستخدمه بأي طريقة راجع رخصة المشروع وتعليمات المساهمة قبل نسخه أو توزيعه

ال Branch بيفصل الشغل الجديد

في مثال المكتبة تقدر تعمل فرعا لميزة البحث وتضيف تغييراتك فيه بدل تعديل الفرع الأساسي مباشرة زميلك يقدر يشتغل في فرع مختلف لإصلاح تسجيل الدخول

الفروع بتساعد على تنظيم الشغل لكنها مش بتمنع كل التعارضات لو اتنين عدلوا نفس الجزء ممكن يظهر تعارض وقت الدمج وساعتها بتراجع النسختين وتختار الشكل الصحيح

ال Pull Request علشان التعديل يتراجع

بعد ما تخلص ميزة البحث بتفتح طلب دمج توضح فيه المشكلة والتغيير وطريقة تجربته زميلك يقدر يشوف الفرق بين الملفات ويسألك عن جزء أو يقترح تعديلا قبل الدمج

طلب الدمج مش مجرد زرار لقبول الكود اشرح ليه غيرت السلوك واذكر خطوات التحقق ولو في تأثير على جزء تاني وضحه علشان المراجعة تبقى مفيدة

ال Issues لتنظيم المشاكل والمطلوب

لو مستخدم قال إن البحث مش بيرجع نتيجة تقدر تسجل المشكلة في Issue وتحط خطوات تكرارها والنتيجة المتوقعة واللي ظهر فعلا وتحدد مين هيتابعها

تقدر تستخدمها كمان لتخطيط ميزة جديدة وتقسيمها لمهام أصغر بدل ما تفاصيل الشغل تتوه بين الرسائل

مثال لوصف مشكلة بشكل واضح

الوصف التالي بيساعد أي شخص في الفريق يجرب نفس الخطوات بدل ما يبدأ بتخمين سبب المشكلة

Title: Search ignores uppercase book titles

Steps:
1. Open the book search page
2. Search for CLEAN CODE
3. Compare with the result for clean code

Expected: Both searches return the same book
Actual: The uppercase search returns no results

ال Fork للمساهمة في مشروع مش بتملكه

ال Fork بيعمل نسخة مرتبطة بالمستودع على المنصة تحت حسابك وتقدر تشتغل فيها ثم تقترح تغييراتك على المشروع الأصلي حسب قواعده أما ال Clone فهو تنزيل نسخة من المستودع على جهازك

لو هدفك تصلح خطأ في مشروع مفتوح المصدر ابدأ بقراءة ملف CONTRIBUTING لو موجود واختار تغييرا صغيرا تقدر تشرحه وتجربه

ال Actions لتشغيل خطوات متكررة

تقدر تضبط Workflow يشغل اختبارات المشروع أو يبني الملفات عند حدث معين زي فتح Pull Request وده بيساعد الفريق يلاحظ المشاكل قبل الدمج

نجاح الاختبارات مش ضمان إن البرنامج خالي من الأخطاء لكنه دليل إن الحالات اللي اختبرتها نجحت وقت التشغيل ومش كل Workflow بينشر الموقع النشر لازم يكون متعرف بخطواته وصلاحياته

تاريخ الكود مفيد لكنه مش نسخة احتياطية لكل حاجة

الملفات اللي لسه مرفعتهاش مش هتظهر في المستودع البعيد وقاعدة بيانات الموقع والملفات المرفوعة من المستخدمين غالبا مش جزء من Git أصلا علشان كده احتفظ بنسخ احتياطية مناسبة لكل نوع بيانات

متوصفش وجود المشروع على GitHub كضمان أبدي ضد الفقد راجع طريقة النسخ والاسترجاع والصلاحيات وخلي عندك خطة تناسب أهمية مشروعك

اعرض شغلك بشكل يفهمه اللي بيزور حسابك

اكتب README يشرح فكرة المشروع وطريقة تشغيله والمتطلبات وخطوات الاختبار وحط أمثلة واضحة أو صور مناسبة للمشروع بدل ما تسيب المستودع من غير شرح

عدد ال Commits أو المربعات الملونة مش تقييم كافي لمستوى المبرمج مراجعة الكود وحل مشكلة صعبة وتحسين التوثيق كلها مساهمات قيمتها مش بتتقاس بالعدد بس

ابدأ بمشروع صغير

ارفع مشروعا تدريبيا من غير بيانات خاصة واكتب له README وبعدها جرب تعمل فرعا لتعديل بسيط وتفتح Pull Request وتراجع الفرق قبل الدمج

اتعلم الفكرة وراء الأدوات لأن نفس طريقة تنظيم التغييرات والمراجعة هتفيدك لما تشتغل على منصات شبيهة زي GitLab أو Bitbucket حتى لو أسماء بعض الواجهات مختلفة

مصادر للتوسع