GitHub هي أكبر منصة ويب لاستضافة مستودعات Git والتطوير التعاوني وأتمتة العمليات، المملوكة لشركة Microsoft. لا توفر فقط تخزين الكود مع التحكم في الإصدارات، بل توفر أيضاً مجموعة كاملة من أدوات إدارة المشاريع: تتبع المشكلات (Issue Tracking)، وطلبات السحب (Pull Request) مع مراجعة الكود، وActions للـ CI/CD، وWiki للتوثيق. وفقاً لـ GitHub، 2024، تضم المنصة أكثر من 100 مليون مطور و420 مليون مستودع.
الخلاصة
GitHub هي خدمة ويب لتخزين والتعاون على مستودعات Git، تأسست في عام 2008 بواسطة توم بريستون-فيرنر وكريس فانسترات وبي جي هايت. في عام 2018، استحوذت Microsoft على الشركة مقابل 7.5 مليار دولار. توفر المنصة واجهة ويب لجميع عمليات Git، مع إضافة ميزات اجتماعية فوقها: forks، النجوم، الاشتراكات، مراجعة الكود ونظام تكامل مستمر مدمج.
الفرق الرئيسي بين GitHub ومنافسيه هو النظام البيئي المفتوح وأكبر مجتمع مطورين. تستضيف GitHub الكود المصدري لـ Android وKubernetes وReact وSwift وKotlin وآلاف المشاريع مفتوحة المصدر الأخرى. هذا يجعل المنصة ليست مجرد أداة تخزين كود، بل أيضاً شبكة اجتماعية للمطورين: يمكنك متابعة المشاريع ومناقشة التغييرات والمساهمة من خلال pull requests.
وفقاً لتقرير Microsoft (2024)، يمر أكثر من 10 ملايين Pull Request جديد عبر GitHub يومياً، وتجاوز عدد المستخدمين النشطين شهرياً 100 مليون. تدعم المنصة أكثر من 500 لغة برمجة، والكشف التلقائي عن اللغة بامتداد الملف وإبراز بناء جملة الكود.
وظائف GitHub تتجاوز بكثير مجرد استضافة Git. توفر المنصة: GitHub Actions — نظام CI/CD مدمج؛ GitHub Packages — سجل للحزم والحاويات؛ GitHub Codespaces — بيئات تطوير سحابية تعتمد على VS Code؛ GitHub Discussions — منتدى للمجتمع؛ GitHub Security — Dependabot للتحديث التلقائي للتبعيات وفحص الثغرات؛ GitHub Copilot — مساعد ذكاء اصطناعي لكتابة الكود.
للمؤسسات، تقدم GitHub GitHub Enterprise — إصدار مؤسسي مع استضافة ذاتية (GitHub Enterprise Server) أو نشر سحابي (GitHub Enterprise Cloud). تشمل الميزات المؤسسية مصادقة SAML/SSO، وتدقيق الإجراءات، وسياسات أمان المستودعات، واتفاقية مستوى خدمة بنسبة 99.95٪. يتم استخدام إصدار Enterprise من قبل شركات مثل Google وApple وAirbnb.
ميزة مهمة في GitHub هي GitHub CLI (gh)، التي تتيح لك تنفيذ جميع عمليات المنصة من سطر الأوامر دون استخدام الواجهة web. باستخدام gh، يمكنك إنشاء المستودعات وإدارة Issues ومراجعة Pull Requests وتشغيل Actions مباشرة من الطرفية، مما يسرع عمل المطورين المعتادين على سطر الأوامر.
| الميزة | الغرض | التوفر |
|---|---|---|
| Actions | CI/CD والأتمتة | مجاناً 2000 دقيقة/شهر |
| Codespaces | بيئة تطوير سحابية تعتمد على VS Code | مدفوع، 60 ساعة/شهر مجاناً |
| Packages | استضافة الحزم وصور Docker | مجاناً 500 MB |
| Dependabot | التحديث التلقائي للتبعيات | مجاناً للمستودعات العامة |
| Pages | استضافة المواقع الثابتة | مجاناً |
Pull Request (PR) هي الآلية الرئيسية لإجراء التغييرات على مشروع في GitHub. ينشئ المطور فرعاً بالتغييرات، وينشره على GitHub ويرسل طلب دمج (Pull Request) إلى الفرع الرئيسي. يرى المشاركون الآخرون في المشروع الفرق (diff) بين الفروع، ويمكنهم ترك تعليقات على أسطر محددة من الكود، واقتراح تغييرات، والموافقة على الطلب أو رفضه.
عملية مراجعة الكود في GitHub مبنية حول PR. كل تعليق يرتبط بسطر معين في الفرق ويمكن أن يكون من ثلاثة أنواع: Comment (تعليق عادي)، Request Changes(يتطلب تصحيحات) وApprove(موافقة). بعد إجراء التغييرات، يقوم المؤلف بتحديث PR بارتكاز جديد، وتتكرر عملية المراجعة. بمجرد حل جميع الملاحظات والموافقة على PR، يتم دمج التغييرات في الفرع المستهدف.
# إنشاء فرع ميزة ودفعه
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug
# إنشاء PR عبر CLI
gh pr create --base main --title "Fix login validation" \
--body "Fixed edge case with empty email field"
# عرض ودمج PR
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug
يدعم GitHub قواعد حماية الفروع: يمكنك منع الدفع المباشر إلى main، وطلب عدد إلزامي من الموافقات قبل الدمج، وتشغيل فحوصات Actions، وطلب تحديث الفرع قبل الدمج. يتم تكوين حماية الفروع في Settings ← Branches وهي ممارسة إلزامية للمشاريع الإنتاجية، مما يمنع إدخال كود غير مستقر عن طريق الخطأ إلى الفرع الرئيسي.
GitHub Actions هي منصة CI/CD مدمجة تتيح لك أتمتة سير العمل مباشرة في المستودع. يتم وصف سير العمل في ملفات YAML الموجودة في الدليل .github/workflows/. يتكون كل سير عمل من مهمة أو أكثر يتم تنفيذها على runners — أجهزة افتراضية تعمل بنظام Linux أو Windows أو macOS.
تدعم Actions نموذجاً يعتمد على الأحداث: يتم تشغيل سير العمل عند الدفع أو إنشاء PR أو نشر إصدار أو وفقاً لجدول زمني أو عبر webhook. يتيح لك ذلك أتمتة البناء وتشغيل الاختبارات وتحليل الكود الثابت والنشر في متاجر التطبيقات والنشر على الخادم دون مشاركة المطور. فيما يلي مثال لسير عمل لمشروع Android:
name: Android CI
on:
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
- name: Build with Gradle
run: ./gradlew assembleDebug
يشمل النظام البيئي لـ Actions أكثر من 20,000 إجراء جاهز في GitHub Marketplace. الإجراءات الشائعة: checkout (استنساخ المستودع)، setup-java/setup-node/setup-python (إعداد البيئة)، upload-artifact (حفظ قطع البناء)، cache (التخزين المؤقت للتبعيات للسرعة)، slack-notify (إرسال إشعارات إلى Slack). تدعم Actions أيضاً البناء المصفوفي — التنفيذ المتزامن على إصدارات متعددة من أنظمة التشغيل أو اللغات.
Issues هو نظام مدمج لتتبع المهام في GitHub. كل Issue لها عنوان ووصف ووسوم (labels) ومنفذون معينون (assignees) ومعالم (milestones) وطلبات سحب مرتبطة. يمكن أن تكون Issues ذات قوالب — يتم استخدام قوالب مختلفة لتقارير الأخطاء أو طلبات الميزات أو الأسئلة، والتي يتم إدراجها تلقائياً عند الإنشاء.
GitHub Projects (المعروف سابقاً باسم Projects Beta) هي أداة إدارة مشاريع تعتمد على اللوحات، تشبه Jira وTrello. تدعم Projects الحقول المخصصة (الحالة، الأولوية، السباق)، والربط مع Issues وPull Requests، وأتمتة حركة البطاقات عند تغيير حالة المهمة، والتحليلات في شكل مخطط احتراق (burndown chart). Projects متوفرة في وضعين: Table (عرض جدولي) وBoard(لوحة kanban).
لإدارة الإصدارات، يوفر GitHub Milestones — مجموعات من Issues وPR موحدة بهدف مشترك بموعد نهائي. يظهر كل معلم التقدم: عدد المهام المفتوحة، وعدد المهام المغلقة، وما إذا كان الموعد النهائي يتحقق. تتكامل المعالم مع Releases — عند نشر إصدار، يمكنك ربطه بمعلم وإنشاء CHANGELOG تلقائياً بناءً على Issues المغلقة.
GitHub Pages هي استضافة مجانية للمواقع الثابتة تنشر تلقائياً محتوى المستودع على العنوان https://username.github.io/repository. تدعم Pages HTML وCSS وJavaScript والمولدات الثابتة: Jekyll (مدمج)، Hugo، Next.js (تصدير) وMkDocs. يشمل الإعداد اختيار الفرع والدليل للنشر، بالإضافة إلى دعم النطاق المخصص.
للتوثيق الفني، يوفر GitHub Wiki — نظام ويكي مدمج يتم تخزينه أيضاً كمستودع Git. يدعم Wiki Markdown ويسمح بتحرير الصفحات إما من خلال الواجهة web أو محلياً عبر push إلى مستودع wiki. كل صفحة Wiki لها سجل تغييرات خاص بها، وهو مناسب لتوثيق API والهندسة وعمليات المشروع.
مزيج GitHub Pages + Jekyll هو حل شائع لمواقع التوثيق. يقوم Jekyll تلقائياً بتحويل ملفات Markdown إلى صفحات HTML ثابتة، ويدعم السمات والتنقل والبحث. على سبيل المثال، كان توثيق Android Developers يستخدم سابقاً Jekyll على GitHub Pages، والآن يستخدم منصة داخلية، لكن آلاف المشاريع مفتوحة المصدر لا تزال تستخدم هذا المزيج لمواقعها.
GitHub CLI (gh) تتيح تنفيذ جميع عمليات المنصة من خلال سطر الأوامر: إنشاء المستودعات، إدارة Issues، عرض والموافقة على Pull Requests، تشغيل Actions. الأمر gh repo create my-project --public ينشئ مستودعاً بعيداً ويربطه بالمحلي، بينما gh pr create ينشئ Pull Request من الفرع الحالي. CLI تسرع عمل المطورين الذين يفضلون الطرفية على الواجهة web.
GitHub REST API وGraphQL API توفران وصولاً برمجياً لجميع ميزات المنصة: إنشاء Issues، إدارة المستخدمين، جلب الإحصائيات وإدارة Actions. يفضل استخدام GraphQL API للاستعلامات المعقدة لأنه يسمح بجلب الحقول المطلوبة فقط في طلب واحد. حد المعدل لـ REST API هو 5000 طلب في الساعة للمستخدمين الموثقين. يستخدم API على نطاق واسع لدمج GitHub مع أنظمة CI الخارجية وأدوات DevOps الداخلية.
GitHub Gist هي خدمة لنشر مقتطفات الكود دون إنشاء مستودع كامل. تدعم Gist إبراز بناء الجملة والتضمين في المواقع الخارجية وسجل الإصدارات. يمكن أن يكون كل Gist عاماً (مرئياً في البحث) أو سرياً (يمكن الوصول إليه فقط عبر الرابط). يُستخدم Gist للمشاركة السريعة للتكوينات والسجلات وأمثلة الكود في مراسلات الفريق، وكذلك كبديل لـ Pastebin للمطورين.
الأسئلة الشائعة
GitHub تركز على المجتمع المفتوح والميزات الاجتماعية (forks، النجوم). يقدم GitLab CI/CD مدمجاً أكثر قوة واستضافة ذاتية بدون قيود على دقائق Actions.
GitHub Team يكلف 4 دولارات لكل مستخدم شهرياً ويوفر مستودعات خاصة غير محدودة وحماية الفروع وActions (3000 دقيقة). الخطة المجانية مناسبة للمشاريع الصغيرة مفتوحة المصدر.
عند إنشاء مستودع، اختر Private بدلاً من Public. في المستودعات الخاصة، الكود مرئي فقط للمساهمين المدعوين. في الخطة المجانية، المستودعات الخاصة متاحة بحد يصل إلى 3 مساهمين.
GitHub Copilot هو مساعد ذكاء اصطناعي يعتمد على OpenAI Codex يقدم إكمالاً تلقائياً للكود في الوقت الفعلي. يعمل في VS Code وJetBrains وNeovim ويدعم جميع لغات البرمجة الشائعة.
انتقل إلى Settings → Danger Zone → Delete this repository. الحذف لا رجعة فيه — سيتم حذف جميع الالتزامات وIssues وWiki دون إمكانية الاسترداد. تأكد من وجود نسخة احتياطية مسبقاً.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا