توثيق شامل لمنصة GitHub

دليل مرجعي كامل لجميع ميزات وخدمات GitHub مع شرح مفصل وأمثلة عملية

أساسيات GitHub

ما هو GitHub؟

GitHub هي منصة استضافة لمشاريع البرمجيات تستخدم نظام التحكم في الإصدارات Git. توفر GitHub واجهة ويب سهلة الاستخدام وتضيف ميزات تعاونية مثل تتبع المشكلات، طلبات السحب، المراجعات، والمزيد.

المميزات الرئيسية:

  • استضافة مستودعات Git بشكل مجاني للمشاريع المفتوحة المصدر
  • أدوات تعاونية متكاملة للفرق
  • واجهة مستخدم رسومية سهلة الاستخدام
  • تكامل مع أدوات التطوير المختلفة
  • خدمات CI/CD مدمجة من خلال GitHub Actions
  • إدارة المشاريع من خلال لوحات المشروع والمهام

الفرق بين Git و GitHub:

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

إنشاء حساب GitHub

الخطوة الأولى للبدء مع GitHub هي إنشاء حساب. العملية بسيطة وتتطلب بريد إلكتروني صالح.

خطوات إنشاء حساب:

  1. زيارة موقع github.com
  2. النقر على زر "Sign up" في الصفحة الرئيسية
  3. إدخال البريد الإلكتروني، كلمة المرور، واسم المستخدم
  4. إكمال اختبار التحقق
  5. تأكيد البريد الإلكتروني
  6. تخصيص الإعدادات (اختياري)

نصائح لاختيار اسم مستخدم:

  • اختر اسماً سهل التذكر ويعكس هويتك المهنية
  • تجنب الأرقام والرموز الكثيرة
  • فكر في استخدام اسمك الحقيقي أو اسم مستعار معروف
  • اختر اسماً يمكنك استخدامه في منصات أخرى للحفاظ على هوية موحدة

واجهة GitHub

فهم واجهة GitHub أمر أساسي للاستفادة القصوى من المنصة. تتكون الواجهة من عدة أقسام رئيسية.

العناصر الرئيسية في واجهة GitHub:

  • الصفحة الرئيسية (Dashboard):

    تعرض نشاط المستودعات التي تتابعها، والإشعارات، والاقتراحات.

  • الملف الشخصي (Profile):

    يعرض معلوماتك، مستودعاتك، ومساهماتك في مشاريع أخرى.

  • صفحة المستودع (Repository):

    تعرض محتويات المستودع، التاريخ، المشكلات، وطلبات السحب.

  • الإشعارات (Notifications):

    تنبيهات عن النشاطات في المستودعات التي تتابعها أو تشارك فيها.

  • الاستكشاف (Explore):

    اكتشاف مشاريع جديدة واتجاهات في عالم البرمجة.

اختصارات لوحة المفاتيح المفيدة:

g h - الانتقال إلى الصفحة الرئيسية
g n - الانتقال إلى الإشعارات
g p - الانتقال إلى الملف الشخصي
g c - الانتقال إلى لوحة الإنشاء
? - عرض جميع الاختصارات المتاحة
s - التركيز على شريط البحث

المستودعات

إنشاء مستودع جديد

المستودع (Repository) هو المكان الذي يحتوي على مشروعك، بما في ذلك الملفات والتاريخ.

خطوات إنشاء مستودع جديد:

  1. انقر على زر "+" في الزاوية العلوية اليمنى، ثم اختر "New repository"
  2. أدخل اسم المستودع (مطلوب)
  3. أضف وصفاً اختيارياً للمستودع
  4. اختر ما إذا كان المستودع عاماً أو خاصاً
  5. حدد ما إذا كنت تريد إضافة ملف README، ملف .gitignore، أو ترخيص
  6. انقر على "Create repository"

إعداد مستودع محلي وربطه بـ GitHub:

# إنشاء مستودع محلي جديد
git init

# إضافة الملفات للمستودع
git add .

# عمل أول التزام
git commit -m "الالتزام الأولي"

# ربط المستودع المحلي بمستودع GitHub
git remote add origin https://github.com/username/repository.git

# دفع الكود إلى GitHub
git push -u origin main

أفضل الممارسات:

  • استخدم أسماء واضحة ووصفية للمستودعات
  • أضف ملف README.md شامل يشرح المشروع
  • أضف ملف .gitignore مناسب لنوع المشروع
  • اختر ترخيصاً مناسباً لمشروعك
  • حافظ على تحديث الوثائق بانتظام

استنساخ مستودع

استنساخ (Clone) مستودع يعني إنشاء نسخة محلية من مستودع موجود على GitHub.

طرق استنساخ مستودع:

استنساخ باستخدام HTTPS:
git clone https://github.com/username/repository.git
استنساخ باستخدام SSH (يتطلب إعداد مفاتيح SSH):
git clone [email protected]:username/repository.git
استنساخ فرع محدد:
git clone -b branch-name https://github.com/username/repository.git

ملاحظات مهمة:

  • استخدام SSH أكثر أماناً وأسرع من HTTPS للاستخدام المتكرر
  • يمكنك استنساخ مستودع عام دون الحاجة لتسجيل الدخول
  • للمستودعات الخاصة، ستحتاج إلى تسجيل الدخول أو استخدام مفاتيح SSH
  • استخدم --depth 1 لاستنساخ ضحل إذا كان تاريخ المستودع كبيراً جداً

إدارة الفروع على GitHub

الفروع تسمح بالعمل على ميزات أو إصلاحات بشكل منفصل عن الفرع الرئيسي.

العمليات الأساسية للفروع:

عرض جميع الفروع:
git branch -a
إنشاء فرع جديد والانتقال إليه:
git checkout -b new-branch-name
دفع فرع جديد إلى GitHub:
git push -u origin new-branch-name
حذف فرع محلي:
git branch -d branch-name
حذف فرع على GitHub:
git push origin --delete branch-name

استراتيجيات التفرع:

  • Gitflow:

    استراتيجية تستخدم فروعاً متعددة (main, develop, feature, release, hotfix) لإدارة دورة حياة التطوير.

  • GitHub Flow:

    استراتيجية أبسط تعتمد على إنشاء فروع من main، ثم دمجها مرة أخرى من خلال طلبات السحب.

  • Trunk-Based Development:

    استراتيجية تركز على العمل في الفرع الرئيسي مع فروع قصيرة العمر للميزات.

التعاون

طلبات السحب (Pull Requests)

طلبات السحب هي الطريقة الرئيسية للتعاون في GitHub، حيث تسمح بمراجعة التغييرات قبل دمجها في الفرع الرئيسي.

إنشاء طلب سحب:

  1. انتقل إلى صفحة المستودع على GitHub
  2. انقر على تبويب "Pull requests"
  3. انقر على زر "New pull request"
  4. اختر الفرع الأساسي (الذي تريد الدمج فيه) والفرع المقارن (الذي يحتوي على تغييراتك)
  5. راجع التغييرات وتأكد من صحتها
  6. أضف عنواناً ووصفاً لطلب السحب
  7. انقر على "Create pull request"

مراجعة طلب السحب:

  • مراجعة التغييرات:

    فحص الكود المتغير، إضافة تعليقات على أسطر محددة، واقتراح تغييرات.

  • إضافة مراجعة:

    يمكنك تقديم تعليق، الموافقة، أو طلب تغييرات.

  • دمج طلب السحب:

    بعد الموافقة، يمكن دمج التغييرات في الفرع الأساسي.

أفضل الممارسات:

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

المشكلات (Issues)

المشكلات هي طريقة لتتبع الأخطاء، التحسينات، والمهام في مشروعك.

إنشاء مشكلة جديدة:

  1. انتقل إلى تبويب "Issues" في المستودع
  2. انقر على زر "New issue"
  3. اختر قالباً إذا كان متاحاً
  4. أضف عنواناً ووصفاً للمشكلة
  5. أضف تسميات، مهام، ومراحل إذا لزم الأمر
  6. عين المشكلة لشخص معين (اختياري)
  7. انقر على "Submit new issue"

إدارة المشكلات:

  • التسميات (Labels):

    تصنيف المشكلات (مثل: خطأ، تحسين، وثائق).

  • المراحل (Milestones):

    تجميع المشكلات في مراحل زمنية أو إصدارات.

  • المهام (Projects):

    تنظيم المشكلات في لوحات مشاريع.

  • التعيين (Assignment):

    تعيين المشكلة لشخص معين للعمل عليها.

استخدام الكلمات المفتاحية:

يمكنك استخدام كلمات مفتاحية في التعليقات لإغلاق المشكلات تلقائياً عند دمج الكود:

closes #123 - إغلاق المشكلة رقم 123
fixes #456 - إصلاح المشكلة رقم 456
resolves #789 - حل المشكلة رقم 789
implements #101 - تنفيذ المشكلة رقم 101

المناقشات (Discussions)

المناقشات هي ميزة تتيح إجراء محادثات حول المشروع خارج نطاق المشكلات وطلبات السحب.

أنواع المناقشات:

  • أسئلة وأجوبة:

    طرح أسئلة ووضع علامة على الإجابات المقبولة.

  • إعلانات:

    مشاركة تحديثات وإعلانات مع المجتمع.

  • عام:

    مناقشات عامة حول المشروع.

  • أفكار:

    اقتراح أفكار جديدة للمشروع.

متى تستخدم المناقشات بدلاً من المشكلات:

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

المشكلات والتتبع

لوحات المشاريع (Projects)

لوحات المشاريع هي أداة لإدارة المهام والمشكلات بطريقة مرئية، مشابهة للوحات Kanban.

أنواع لوحات المشاريع:

  • المشاريع الكلاسيكية:

    النسخة الأصلية من لوحات المشاريع في GitHub.

  • المشاريع (beta):

    النسخة المحسنة مع ميزات إضافية مثل العرض المخصص والحقول المخصصة.

إنشاء وإدارة لوحة مشروع:

  1. انتقل إلى تبويب "Projects" في المستودع أو الملف الشخصي
  2. انقر على "New project"
  3. اختر قالباً (مثل: Kanban، Backlog، Bug triage)
  4. أضف أعمدة حسب احتياجاتك (مثل: To do، In progress، Done)
  5. أضف بطاقات للمهام أو اربط المشكلات وطلبات السحب الموجودة
  6. اسحب البطاقات بين الأعمدة لتحديث حالتها

نصائح لاستخدام لوحات المشاريع بفعالية:

  • استخدم التسميات والمرشحات لتنظيم المهام
  • أضف تواريخ استحقاق للمهام المهمة
  • استخدم الأتمتة لتحريك البطاقات تلقائياً (مثل: نقل المشكلات المغلقة إلى عمود "Done")
  • قم بمراجعة وتحديث اللوحة بانتظام
  • استخدم عرض التقويم للتخطيط الزمني

المراحل (Milestones)

المراحل تساعد في تجميع المشكلات وطلبات السحب المرتبطة بهدف أو إصدار معين.

إنشاء وإدارة المراحل:

  1. انتقل إلى تبويب "Issues" في المستودع
  2. انقر على "Milestones"
  3. انقر على "New milestone"
  4. أضف عنواناً ووصفاً وتاريخ استحقاق (اختياري)
  5. انقر على "Create milestone"
  6. أضف المشكلات وطلبات السحب ذات الصلة إلى المرحلة

استخدامات المراحل:

  • تخطيط الإصدارات:

    تجميع المشكلات والميزات المخطط لها لإصدار معين.

  • تتبع التقدم:

    مراقبة نسبة اكتمال المشكلات في كل مرحلة.

  • تحديد الأولويات:

    تنظيم العمل حسب المراحل الزمنية المختلفة.

  • التواصل مع المجتمع:

    مشاركة خطة التطوير والجدول الزمني مع المستخدمين.

GitHub Actions

ما هي GitHub Actions؟

GitHub Actions هي خدمة CI/CD (التكامل المستمر/النشر المستمر) مدمجة في GitHub، تسمح بأتمتة سير العمل مباشرة من المستودع.

المفاهيم الأساسية:

  • سير العمل (Workflow):

    عملية آلية قابلة للتكوين تتكون من واحد أو أكثر من الوظائف.

  • الحدث (Event):

    نشاط محدد يؤدي إلى تشغيل سير العمل (مثل: دفع الكود، إنشاء طلب سحب).

  • الوظيفة (Job):

    مجموعة من الخطوات التي تنفذ على نفس العامل.

  • الخطوة (Step):

    مهمة فردية يمكن أن تنفذ أوامر أو إجراءات.

  • الإجراء (Action):

    تطبيق مستقل يؤدي مهمة معقدة متكررة.

  • العامل (Runner):

    خادم يقوم بتشغيل سير العمل.

مثال بسيط لملف سير عمل:

name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v2
    
    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'
        
    - name: Install dependencies
      run: npm ci
      
    - name: Run tests
      run: npm test

استخدامات شائعة لـ GitHub Actions:

  • اختبار الكود تلقائياً عند كل دفع أو طلب سحب
  • بناء ونشر التطبيقات تلقائياً
  • فحص جودة الكود وتحليله
  • إنشاء إصدارات وملاحظات الإصدار تلقائياً
  • أتمتة مهام الصيانة الروتينية
  • إرسال إشعارات وتحديثات

إنشاء سير عمل مخصص

يمكنك إنشاء سير عمل مخصص لتلبية احتياجات مشروعك الخاصة.

خطوات إنشاء سير عمل:

  1. انتقل إلى تبويب "Actions" في المستودع
  2. انقر على "New workflow"
  3. اختر "set up a workflow yourself" لإنشاء ملف سير عمل من الصفر
  4. قم بتحرير ملف YAML لتحديد الأحداث والوظائف والخطوات
  5. انقر على "Start commit" لحفظ سير العمل

مثال على ملف سير عمل بسيط:

name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'
    - name: Install dependencies
      run: npm ci
    - name: Run tests
      run: npm test

GitHub Pages

ما هي GitHub Pages؟

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

مميزات GitHub Pages:

  • استضافة مجانية للمواقع الساكنة
  • دعم للمواقع الشخصية والتنظيمية ومواقع المشاريع
  • تكامل مباشر مع مستودعات GitHub
  • دعم لنطاقات مخصصة
  • دعم لمولدات المواقع الساكنة مثل Jekyll

خطوات تفعيل GitHub Pages:

  1. انتقل إلى إعدادات المستودع (Settings)
  2. اختر قسم "Pages" من القائمة الجانبية
  3. حدد الفرع المصدر (Source branch) الذي يحتوي على ملفات الموقع
  4. اختر المجلد (/ أو /docs)
  5. انقر على "Save"
  6. انتظر بضع دقائق حتى يتم نشر الموقع

أنواع مواقع GitHub Pages:

  • موقع المستخدم: username.github.io (فرع main)
  • موقع المنظمة: organization.github.io (فرع main)
  • موقع المشروع: username.github.io/repository (فرع gh-pages أو main)

استخدام نطاق مخصص

يمكنك استخدام نطاق مخصص خاص بك بدلاً من النطاق الافتراضي github.io.

خطوات إعداد نطاق مخصص:

  1. أضف ملف CNAME في جذر المستودع يحتوي على اسم النطاق المخصص
  2. انتقل إلى إعدادات GitHub Pages في المستودع
  3. أدخل اسم النطاق المخصص في قسم "Custom domain"
  4. قم بتكوين سجلات DNS لدى مزود النطاق الخاص بك:
    • سجل A يشير إلى عناوين IP الخاصة بـ GitHub Pages
    • أو سجل CNAME يشير إلى username.github.io

GitHub Marketplace

ما هو GitHub Marketplace؟

GitHub Marketplace هو متجر للأدوات والتطبيقات التي تتكامل مع GitHub لتحسين سير العمل وزيادة الإنتاجية.

أنواع الأدوات في Marketplace:

  • أدوات CI/CD
  • أدوات مراجعة الكود
  • أدوات الأمان والتدقيق
  • أدوات إدارة المشاريع
  • أدوات النشر والاستضافة
  • أدوات المراقبة والتنبيه

كيفية استخدام GitHub Marketplace:

  1. انتقل إلى Marketplace من القائمة العلوية في GitHub
  2. تصفح الأدوات أو ابحث عن أداة محددة
  3. اختر الأداة المناسبة واقرأ التفاصيل والتقييمات
  4. انقر على "Install it for free" أو اختر خطة مدفوعة
  5. اتبع خطوات التثبيت والتكوين

أدوات شائعة في GitHub Marketplace:

  • CodeQL: أداة تحليل أمان الكود
  • Dependabot: تحديث التبعيات تلقائياً
  • CircleCI: تكامل مستمر وتسليم مستمر
  • Codecov: تغطية اختبارات الكود
  • ZenHub: إدارة المشاريع داخل GitHub

ميزات متقدمة

GitHub Codespaces

بيئة تطوير سحابية متكاملة تتيح لك العمل على مشاريع GitHub مباشرة في المتصفح.

مميزات Codespaces:

  • بيئة تطوير كاملة في المتصفح
  • تكوين مخصص للبيئة باستخدام ملفات devcontainer.json
  • تكامل مع VS Code
  • مشاركة البيئة مع أعضاء الفريق
  • تشغيل التطبيقات وعرضها مباشرة

GitHub Copilot

مساعد برمجة مدعوم بالذكاء الاصطناعي يقترح أكواد كاملة أثناء الكتابة.

مميزات Copilot:

  • اقتراح أكواد بناءً على التعليقات والسياق
  • دعم للعديد من لغات البرمجة
  • تكامل مع محررات الأكواد الشائعة
  • تحسين الإنتاجية وتسريع عملية التطوير

GitHub Discussions

منتدى للمناقشات المجتمعية حول المشروع، يتيح التواصل بين المطورين والمستخدمين.

مميزات Discussions:

  • فئات مخصصة للمناقشات
  • تمييز الإجابات المقبولة
  • تنظيم المناقشات بشكل منفصل عن المشكلات
  • بناء مجتمع حول المشروع