GitHub من منظور عملي: أكثر من مجرد مستودع كود
كثير يتعامل مع GitHub على أنه مكان يرفع فيه الكود وخلاص. لكن مع الوقت تكتشف أن الموضوع أعمق من “رفع مشروع”. هو بيئة كاملة لإدارة الكود، تتبع التغييرات، مراجعة العمل، وأتمتة النشر.
1) Git vs GitHub: نقطة لازم تكون واضحة
Git هو نظام إدارة نسخ (Version Control System) يشتغل عندك محليًا. GitHub هو منصة تستضيف مستودعات Git وتضيف فوقها طبقة تعاون وإدارة.
- Git يحفظ تاريخ المشروع
- GitHub يسهل مشاركة هذا التاريخ
- Git ينفذ الأوامر
- GitHub ينظم الفريق حولها
الخلط بين الاثنين يسبب سوء فهم في طريقة العمل.
2) المستودع (Repository) ليس مجلدًا عاديًا
الـ Repository هو قاعدة بيانات صغيرة تحفظ:
- كل تعديل تم
- من قام به
- ومتى حدث
- وما الذي تغير بالضبط
كل commit هو نقطة زمنية قابلة للاسترجاع. هذا يعطيك قوة الرجوع لأي لحظة سابقة بدون خوف.
git init
git add .
git commit -m "Initial commit"
3) الفروع (Branches): طريقة تفكير قبل أن تكون ميزة
الفروع ليست مجرد ميزة تقنية، بل أسلوب عمل. بدل ما تعدل على الكود الأساسي مباشرة، تنشئ فرع مستقل وتعمل فيه بأمان.
git branch feature-auth
git checkout feature-auth
بهذا الشكل:
- الميزة الجديدة معزولة
- الكود الرئيسي يبقى مستقر
- المراجعة تصبح أسهل
4) Pull Requests: مراجعة الكود كعملية هندسية
أحد أهم أسباب قوة GitHub هو Pull Request. هو ليس زر دمج فقط، بل مساحة نقاش هندسي.
- مراجعة سطر بسطر
- تعليقات مباشرة على الكود
- اقتراح تعديلات
- منع الدمج بدون مراجعة
في المشاريع الكبيرة، هذه المرحلة هي التي تمنع الكوارث.
5) Issues: إدارة العمل بدل الرسائل العشوائية
بدل ما تقول “في مشكلة هنا” داخل دردشة، تفتح Issue.
- توصف المشكلة
- تحدد الأولوية
- تربطها بفرع أو Pull Request
بهذا الشكل المشروع يصبح قابلًا للتتبع.
6) GitHub Actions: الأتمتة بدون خادم إضافي
GitHub ما يكتفي بتخزين الكود. يوفر نظام CI/CD مدمج عبر GitHub Actions.
مثال ملف بسيط:
name: Laravel Tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: composer install
- run: php artisan test
كل push يشغل الاختبارات تلقائيًا. هذا يمنع إدخال كود مكسور للفرع الرئيسي.
7) إدارة الصلاحيات: لا تعطي الجميع كل شيء
GitHub يسمح بتحديد:
- من يستطيع القراءة فقط
- من يستطيع الكتابة
- من يستطيع إدارة المستودع
في المشاريع الحقيقية، توزيع الصلاحيات مهم جدًا. خطأ واحد في الفرع الرئيسي قد يكلف ساعات من العمل.
8) الفرق بين Public و Private
المستودع العام (Public) مرئي للجميع. المستودع الخاص (Private) مخصص لفريق معين.
الاختيار يعتمد على:
- طبيعة المشروع
- هل هو مفتوح المصدر؟
- هل يحتوي أسرارًا أو مفاتيح API؟
قاعدة مهمة: لا ترفع ملفات .env أو أسرار داخل المستودع.
9) GitHub كمحفظة أعمال (Portfolio)
بعيدًا عن العمل الجماعي، GitHub أصبح معيارًا لعرض خبرتك.
- تنظيم الكود
- وضوح الـ README
- تاريخ commits مرتب
- استخدام Issues و Pull Requests بشكل احترافي
كل هذا يعكس طريقة تفكيرك كمطور.