موسوعة عربية للمعرفة التقنية والعلمية الموثقة

ما هو GitHub؟ وكيف يعمل مع Git وطلبات السحب
خلاصة سريعة: GitHub منصة سحابية لاستضافة شفرة المشاريع وإدارة التعاون عليها، مبنية على نظام Git. يخزّن الكود في مستودعات، ويتيح طلبات السحب لمراجعة التغييرات ودمجها، وتتبّع المهام عبر القضايا، وأتمتة البناء والاختبار عبر Actions. Git أداة تتبع الإصدارات على جهازك، وGitHub مكان للعمل الجماعي حولها.
ما هو GitHub؟
GitHub خدمة استضافة لمستودعات Git، أُطلقت عام 2008، واستحوذت عليها Microsoft عام 2018. وهو يضيف إلى Git طبقة تعاون كاملة: صفحة لكل مشروع، وسجل مرئي للتغييرات، ونظام مراجعة، ولوحة مهام، وأدوات أتمتة، واستضافة صفحات ثابتة. ويُستخدم في المشاريع المفتوحة والخاصة على حد سواء، ويستضيف ملايين المستودعات، من مشروع طالب واحد إلى مشروع حكومي واسع.
والفرق الجوهري بين المستودع ومجلد عادي على القرص أن المستودع يحمل تاريخه كاملًا: من غيّر السطر، ومتى، ولماذا. وهذه الميزة هي التي تجعل المراجعة ممكنة، والتراجع عن خطأ ممكنًا، وفهم قرار قديم ممكنًا بعد سنوات.
ما الفرق بين Git وGitHub؟
يخلط كثيرون بين الاسمين، ويظهر الخلط في عبارات مثل «حمّلت المشروع من Git» والقصد GitHub. والحقيقة أن Git برنامج يعمل محليًا، أنشأه لينوس تورفالدس عام 2005 لإدارة نواة Linux، ويحفظ لقطات من الملفات في مستودع محلي. أما GitHub فخدمة على الويب تستضيف نسخة من ذلك المستودع، وتضيف أدوات التعاون حوله.
- Git: أداة سطر أوامر تعمل دون اتصال، وتُنشئ الالتزامات والفروع وتدمجها محليًا.
- GitHub: منصة تتيح مشاركة المستودع، ومراجعة التغييرات، وإدارة المهام، وتشغيل الأتمتة.
- العلاقة: يمكنك استخدام Git دون GitHub، لكن GitHub مبني على Git ولا يقوم بدونه.
- البدائل: GitLab وBitbucket وCodeberg تقدم وظائف قريبة بأسماء وأسعار مختلفة.
كيف يعمل GitHub؟ من الالتزام إلى الدمج
تبدأ الدورة عادة باستنساخ المستودع إلى الجهاز (Clone)، ثم إنشاء فرع (Branch) للعمل عليه بعيدًا عن الفرع الرئيس. وبعد كل تعديل متماسك تُنشئ التزامًا (Commit) برسالة تصف التغيير، ثم تدفع الفرع إلى GitHub (Push). وهنا يبدأ الجزء التعاوني.
طلبات السحب: بوابة المراجعة
طلب السحب (Pull Request) اقتراح لدمج فرع في فرع آخر، ويعرض الفرق سطرًا بسطر. ويستطيع الزملاء التعليق على سطر محدد، وطلب تعديل، والموافقة أو الاعتراض. ويمكن ربط الطلب باختبارات آلية، فلا يُدمج إذا فشل البناء. وقبل الدمج يمر عادة بثلاث حالات: مسودة، ثم جاهز للمراجعة، ثم مدموج أو مغلق.
وقيمة طلب السحب ليست في الزر الذي يدمج، بل في الأثر التنظيمي: كل تغيير له سياق مكتوب، وقرار موثق، وسجل يمكن الرجوع إليه. وهذا ما يفسّر انتشاره في الفرق الصغيرة قبل الكبيرة.
ويفتح النموذج المفتوح بابًا آخر للمساهمة: النسخ إلى حسابك (Fork). ينسخ المساهم المستودع إلى حسابه، ويعدّله هناك، ثم يقترح دمجه عبر طلب سحب، من دون أن يملك صلاحية الكتابة في المستودع الأصلي. وبهذا يستقبل المشروع تعديلات من مطورين لا يعرفهم، ويحتفظ المالك بقرار القبول.
القضايا: ذاكرة المشروع
القضية (Issue) وحدة عمل داخل المستودع: خلل مبلَّغ عنه، أو ميزة مقترحة، أو سؤال. وتُفتح بعنوان ووصف وقالب، وتُصنّف بوسوم (Labels)، وتُسند إلى مسؤول، وتُجمع في لوحات مشاريع. ويمكن الإشارة إلى قضية من رسالة التزام أو من طلب سحب، فيُغلق الخلل تلقائيًا عند دمج الإصلاح.
Actions: الأتمتة داخل المنصة
GitHub Actions نظام لتنفيذ مهام عند وقوع حدث: دفع إلى فرع، أو فتح طلب سحب، أو جدولة زمنية. ويُكتب سير العمل في ملف YAML داخل مجلد .github/workflows، ويحدد الخطوات وبيئة التشغيل. وبهذه الطريقة تُشغَّل الاختبارات، ويُفحص الكود أمنيًا، ويُنشر الموقع، وتُبنى حزمة الإصدار، دون خادم بناء تديره بنفسك.
name: tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && npm test
هذا الملف القصير يكفي لتشغيل الاختبارات عند كل تعديل. وهذا يفسّر انتشار Actions: صارت الأتمتة جزءًا من المستودع نفسه، لا إعدادًا خارجيًا منفصلًا.
ومن الاستخدامات المفيدة أيضًا فحص التبعيات دوريًا، وتوليد نسخة من التوثيق عند كل إصدار، وتعليق آلي على طلب السحب بنتيجة الفحص. وتُحسب دقائق التشغيل ضمن حصة شهرية تختلف بحسب نوع المستودع ونظام التشغيل، ولهذا يُستحسن تحديد مدة كل مهمة بدل تركها مفتوحة.
ما هي GitHub Pages؟
تتيح خدمة GitHub Pages نشر موقع ثابت من مستودع، سواء أكان توثيقًا لمشروع أو مدونة شخصية. وتُبنى الصفحات من ملفات HTML وCSS وJavaScript، أو من مولّد مواقع ثابتة. ويمكن ربط نطاق خاص بها عبر سجل DNS، مع شهادة HTTPS تلقائية. وهي مناسبة للمحتوى الذي لا يحتاج قاعدة بيانات، أما المواقع التي تعتمد على لوحة تحكم وقاعدة بيانات فتحتاج استضافة أخرى.
أين يُستخدم GitHub فعليًا؟
يستخدمه فريق البرمجة لإدارة الشفرة، ويستخدمه فريق التوثيق لكتابة الأدلة بجانب الكود، ويستخدمه الباحث في نشر بيانات وتحليل قابل للتكرار. وتستخدمه الفرق غير البرمجية أيضًا: قوالب ملفات، وقوائم مهام، ومسودات مشتركة تحتفظ بتاريخ التعديل. وفي المشاريع المفتوحة تعمل المنصة كواجهة عامة للمشروع: صفحة تعريف، ودليل مساهمة، وقائمة إصدارات، ومناقشات.
وللمنصة واجهة برمجية عامة تتيح أتمتة ما تفعله في الواجهة: إنشاء قضية، أو قراءة حالة بناء، أو إدارة إصدار. وتشرح مقالة واجهة برمجة التطبيقات كيف تُبنى هذه الطلبات وتُؤمّن. أما الجانب الشبكي، من النطاقات إلى الاتصال، فيُغطيه موضوع الإنترنت.
ما حدود GitHub التي يجب معرفتها؟
المنصة مجانية في خطتها الأساسية للمشاريع العامة والخاصة، مع حدود على دقائق Actions ومساحة التخزين وحجم الملف الواحد. وهذه الحدود تكفي معظم الفرق الصغيرة، لكن المشاريع الكبيرة تحتاج حساب فريق وخطة مدفوعة. أما التخزين فيستحق انتباهًا خاصًا: الملفات الكبيرة وحجم تاريخ المستودعات يتراكمان، وقد تتجاوز الحصة دون ملاحظة.
- الاعتماد على منصة واحدة: تعطّل الخدمة يوقف العمل، ولهذا يُحفظ نسخ احتياطي محلي أو على منصة ثانية.
- خصوصية الشفرة: المستودع الخاص لا يعني أمانًا تلقائيًا؛ الصلاحيات والمفاتيح تحتاج ضبطًا.
- تاريخ Git الدائم: الملف المحذوف يبقى في التاريخ، والسرّ المدفوع يبقى مكشوفًا حتى لو حُذف لاحقًا.
- ضجيج الإشعارات: كثرة القضايا وطلبات السحب بلا تصنيف تُفقد الفريق الأولوية.
ويُضاف إلى ذلك خطر الأسرار المسرّبة. فمن دفع مفتاحًا إلى مستودع، ثم حذفه في التزام لاحق، لم يحذفه فعليًا؛ بقي في السجل. والحل تدوير المفتاح فورًا، وتشغيل فحص آلي للأسرار قبل الدفع، وتفعيل تنبيهات التبعيات.
وفي مسار تطوير الويب وبناء البرمجيات، يتكامل هذا الموضوع مع التكامل المستمر والتسليم المستمر (CI/CD) ومنهجية DevOps.
أسئلة شائعة عن GitHub
هل GitHub مجاني؟
نعم، الخطة المجانية تتيح مستودعات عامة وخاصة بلا حد لعدد المتعاونين، مع حصص على دقائق Actions ومساحة التخزين. وتضيف الخطط المدفوعة أدوات مراجعة متقدمة وحماية للفروع ودعمًا مؤسسيًا.
هل أحتاج إلى تعلم Git قبل GitHub؟
نعم، على الأقل المفاهيم الأساسية: المستودع، والالتزام، والفرع، والدفع، والسحب. ويمكن البدء بواجهة GitHub الرسومية، لكن فهم الأوامر يمنع الأخطاء عند التعارض أو الحاجة إلى استرجاع نسخة سابقة.
ما الفرق بين المستودع العام والخاص؟
المستودع العام يراه أي شخص ويستطيع استنساخه واقتراح تعديلات عليه، أما الخاص فيقتصر على من تمنحه صلاحية الوصول. وفي الحالتين تبقى إعدادات الأمان والصلاحيات مسؤولية مالك المستودع.
ما هي GitHub Actions وما فائدتها؟
نظام أتمتة ينفذ مهام عند أحداث مثل الدفع أو فتح طلب سحب. تُستخدم لتشغيل الاختبارات، وفحص الأمان، وبناء الإصدارات، ونشر المواقع، فيقل الاعتماد على خطوات يدوية قابلة للخطأ.
هل يمكن استخدام GitHub دون اتصال بالإنترنت؟
يمكن العمل على المستودع المحلي بـGit دون اتصال: تعدّل، وتلتزم، وتنشئ فروعًا. وعند عودة الاتصال تدفع التغييرات إلى GitHub. أما القضايا وطلبات السحب والصفحات فتحتاج الاتصال بالخدمة.


