لو فاكر إن 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 حتى لو أسماء بعض الواجهات مختلفة