0Pricing
DevOps Bootcamp · درس

فهم Git Hooks

استكشف الأنواع المختلفة من Git hooks ونقاط تنفيذها في سير عمل Git

فهم Git Hooks درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

ما هي Git Hooks؟

مرحبًا بكم في Git Hooks! إن Git hooks عبارة عن نصوص برمجية قوية قابلة للتخصيص، ينفذها Git تلقائيًا قبل أحداث مثل الالتزام أو الدفع، أو بعدها، أو عند استلام الالتزامات المدفوعة.

فكّروا فيها كنقاط تحقق أو إجراءات تلقائية ضمن سير عمل Git. فهي تساعد في فرض معايير المشروع، وأتمتة المهام، والتكامل مع الأنظمة الأخرى.

أين توجد Hooks؟

يحتوي كل مستودع Git على مجلد .git/hooks. وستجدون بداخله نصوصًا برمجية نموذجية لـ hook (تنتهي عادةً بالامتداد .sample).

لتفعيل hook، أزيلوا امتداد .sample ببساطة واجعلوا الملف قابلًا للتنفيذ. وسيشغّله Git في الوقت المناسب.

  • الموقع: .git/hooks/
  • الملفات: نصوص Shell (Bash وPython وRuby وغيرها)
  • التفعيل: إعادة التسمية وجعل الملف قابلًا للتنفيذ

من جهة العميل مقابل من جهة الخادم

تُصنّف Git hooks إلى نوعين رئيسيين استنادًا إلى مكان تشغيلها:

  • Hooks من جهة العميل: تعمل على جهازكم المحلي (مثلًا قبل تنفيذ commit أو rebase). وتُستخدم لأتمتة سير العمل الشخصي وفرض السياسات المحلية.
  • Hooks من جهة الخادم: تعمل على خادم Git البعيد (مثلًا عند دفع الشيفرة إلى مستودع مشترك). وتفرض سياسات المشروع على الجميع.

Hook من جهة العميل: pre-commit

يُعد hook pre-commit أحد أكثر hooks شيوعًا من جهة العميل. ويعمل *قبل* أن ينشئ Git الالتزام رسميًا.

إذا انتهى النص البرمجي pre-commit بحالة غير صفرية، يُلغي Git الالتزام. وهذا مناسب تمامًا لمهام مثل:

  • فحص الشيفرة (للتحقق من أخطاء التنسيق)
  • تشغيل اختبارات الوحدة
  • التحقق من الملفات الكبيرة أو البيانات الحساسة

Hook من جهة العميل: commit-msg

يعمل hook commit-msg *بعد* إدخال رسالة الالتزام، ولكن *قبل* اعتماد الالتزام نهائيًا.

يفيد هذا hook في ضمان اتباع رسائل الالتزام لاتفاقيات أو تنسيقات محددة. فعلى سبيل المثال، يمكنه التحقق من:

  • بدء الرسالة بمعرّف تذكرة (مثل [JIRA-123])
  • وقوع طول الرسالة ضمن الحدود المسموح بها
  • وجود كلمات مفتاحية محددة أو غيابها

Hook من جهة العميل: post-commit

يعمل hook post-commit *مباشرةً بعد* إنشاء الالتزام بنجاح.

بخلاف pre-commit أو commit-msg، لا يستطيع هذا hook تغيير نتيجة الالتزام. ويُستخدم غالبًا لأغراض الإشعارات أو التكامل، مثل:

  • إخطار أعضاء الفريق
  • تحديث أداة لإدارة المشروع
  • تشغيل عملية بناء للتكامل المستمر (CI)، رغم أن ذلك أكثر شيوعًا مع hooks من جهة الخادم

خطاف الخادم: pre-receive

بالانتقال إلى خطافات جانب الخادم، يُنفَّذ pre-receive قبل تحديث أي مراجع (مثل الفروع أو الوسوم) في المستودع البعيد.

يُعد هذا الخطاف أداة قوية لفرض سياسات المستودع المهمة، مثل:

  • منع الدفع المباشر إلى الفرع main
  • التأكد من توقيع جميع عمليات الإيداع
  • التحقق من هوية المُودِع

إذا انتهى هذا الخطاف برمز غير صفري، فسيُرفض الدفع بالكامل.

خطاف الخادم: post-receive

يُشغَّل الخطاف post-receive بعد أن ينجح الدفع في تحديث المراجع في المستودع البعيد.

ومثل post-commit، لا يستطيع هذا الخطاف رفض الدفع. ويُستخدم عادةً من أجل:

  • تشغيل مسارات CI/CD
  • تحديث متتبعات المشكلات الخارجية
  • إرسال إشعارات بالبريد الإلكتروني إلى الفريق
  • نشر التعليمات البرمجية في بيئة التجهيز

إنشاء خطاف بسيط

لإنشاء خطاف، ما عليك سوى إنشاء ملف يحمل اسم الخطاف (مثل pre-commit) داخل مجلد .git/hooks/. لننشئ خطافًا بسيطًا جدًا:

#!/bin/sh

# This pre-commit hook will always succeed
echo "Running pre-commit hook..."
exit 0

جعل الخطافات قابلة للتنفيذ

بعد إنشاء البرنامج النصي للخطاف، يجب جعله قابلًا للتنفيذ، وإلا فلن يشغّله Git. استخدم الأمر chmod في الطرفية:

chmod +x .git/hooks/pre-commit

الآن، في كل مرة تحاول فيها تنفيذ عملية إيداع، سيشغّل Git هذا البرنامج النصي!

تحقق سريع: توقيت الخطاف

تُشغَّل خطافات Git في نقاط محددة من سير عملك. ويُعد فهم توقيتها أمرًا أساسيًا لاستخدامها بفعالية.

مراجعة: فهم خطافات Git

لقد خطوت أولى نحو عالم خطافات Git القوي!

  • خطافات Git هي برامج نصية تعمل على أتمتة الإجراءات أثناء أحداث Git.
  • توجد هذه الخطافات في مجلد .git/hooks/ ضمن مستودعك.
  • تنقسم الخطافات إلى خطافات من جانب العميل (على الجهاز المحلي) وخطافات من جانب الخادم (في المستودع البعيد).
  • يمكن لخطافات رئيسية مثل pre-commit وpre-receive فرض السياسات من خلال حظر العمليات.
  • تُستخدم خطافات مثل post-commit وpost-receive للإشعارات أو عمليات التكامل بعد تنفيذ الإجراء.

سننتقل بعد ذلك إلى تطبيق أمثلة عملية على خطافات محددة!

الأسئلة الشائعة

هل درس «فهم Git Hooks» مجاني؟

نعم — نص درس «فهم Git Hooks» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

ماذا ستتعلم في «فهم Git Hooks»؟

استكشف الأنواع المختلفة من Git hooks ونقاط تنفيذها في سير عمل Git تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟

لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «فهم Git Hooks»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟

نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. فهم Git Hooks
  2. خطافات ما قبل الالتزام وما بعد الدمج
  3. تخصيص إعدادات Git
  4. مشاركة Hooks باستخدام Husky
← العودة إلى DevOps Bootcamp