في هذا الدرس 6تصفّح المواضيع
إذا كنت تتذكر كلمة مفتاحية أو رقم مهمة ورد في رسالة الالتزام مثل navbar أو fix، يمكنك استخدام الخيار --grep للبحث المباشر داخل نصوص رسائل الالتزامات عبر كامل تاريخ المستودع.
ويعمل البحث عبر --grep افتراضياً بحساسية لحالة الأحرف؛ لذلك يُنصح بإضافة الخيار -i لتجاهل الفرق بين الأحرف الكبيرة والصغيرة أثناء المطابقة.
# Search commit messages for a keyword (case-insensitive)
git log --grep="navbar" -i --oneline
# Combine author and message filters together
git log --author="Tariq" --grep="fix" -i --oneline
لاستعراض الالتزامات التي عدّلت ملفاً أو مجلداً بعينه فقط، مرر مسار الملف في نهاية الأمر بعد فاصل الشرطتين -- مثل git log --oneline -- index.html. يخبر الفاصل -- نظام Git صراحةً أن ما بعده هو مسار ملف على القرص وليس اسم مرجع.
وإذا كان الملف قد أُعيدت تسميته أو نُقل سابقاً بالأمر git mv، أضف الخيار --follow ليستمر Git في تتبع تاريخ الملف حتى قبل تغيير اسمه.
# View commits that modified a specific file path
git log --oneline -- index.html
# Trace a file history even across previous git mv renames
git log --follow --oneline -- style.css
ماذا لو أردت معرفة متى أُضيفت دالة برمجية معينة أو متى حُذف متغير CSS من المشروع بينما لم تذكر رسائل الالتزامات اسمه؟ يوفر Git أداة البحث الجراحي في الكود المعروفة باسم Pickaxe عبر الخيار بالحرف الكبير -S.
بخلاف --grep الذي يبحث في عناوين الرسائل فقط، يغوص الأمر git log -S داخل محتوى الملفات البرمجية نفسها ليرجع الالتزامات التي تغير فيها عدد مرات ظهور ذلك النص تحديداً إضافةً أو حذفاً.
# Find commits that added or removed a function or class
git log -S "main-header" --oneline
# Show the exact code patch where the string changed
git log -S "main-header" -p
عند إعداد تقارير الإنجاز أو سجل تغييرات الإصدار، يتيح لك Git التحكم الكامل في قالب المخرجات وتلخيص نشاط المساهمين عبر أداتين:
- تخصيص التنسيق (
--pretty=format): يستخدم رموزاً تعويضية دقيقة مثل%hللبصمة المختصرة، و%anلاسم المؤلف، و%arللتاريخ النسبي، و%sلعنوان الرسالة. - ملخص المساهمين (
git shortlog): يجمع التزامات المشروع حسب المؤلف؛ ويعرض الأمرgit shortlog -snجدولاً إحصائياً مرتباً تنازلياً بعدد الالتزامات لكل مطور.
# Custom log line: short hash - author (relative date): subject
git log --pretty=format:"%h - %an (%ar): %s" -n 5
# Summarize commit counts per contributor sorted descending
git shortlog -sn
يقارن الجدول المرجعي الشامل التالي بين جميع فلاتر البحث وخيارات التخصيص في سجل Git لاختيار الأداة الأنسب لكل مهمة:
| الفلتر أو الأمر | مثال الصيغة القياسية | نطاق الفحص أو التخصيص | السيناريو العملي المعتاد |
|---|---|---|---|
--author | git log --author="Sara" | اسم المؤلف أو بريده الإلكتروني | مراجعة الالتزامات الخاصة بمطور محدد |
--since / --until | git log --since="1 week ago" | النطاق الزمني لتسجيل الالتزامات | حصر الأعمال المنجزة خلال أسبوع عمل |
--grep | git log --grep="login" -i | نصوص رسائل الالتزامات فقط | البحث عن ميزة أو رقم تذكرة إصلاح |
--follow -- <file> | git log --follow -- app.js | سجل ملف محدد حتى بعد إعادة تسميته | تتبع مراحل تطور ملف واحد عبر الزمن |
-S "<code>" | git log -S "fetchUser" | الكود البرمجي المضاف أو المحذوف فعلياً | اكتشاف الالتزام الذي أضاف أو حذف دالة |
git shortlog -sn | git shortlog -sn | تجميع وترتيب عدد الالتزامات لكل مؤلف | استخراج إحصائيات المساهمين في المشروع |
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس تصفية السجل حسب المؤلف والتاريخ عبر --author و--since، والبحث في نصوص الرسائل بـ --grep -i، وتتبع تاريخ ملف محدد عبر --follow، والبحث الجراحي داخل الكود بالخيار -S، وتخصيص التقارير عبر --pretty=format وgit shortlog -sn. الخطوة التالية: انتقل الآن إلى الدرس 13 «مقارنة التعديلات والفروق عبر الأمر git diff» لمقارنة الفروق بين مجلد العمل ومنطقة التجهيز والالتزامات.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Pickaxe Search (-S) البحث الجراحي في الكود (-S)
- خيار متقدم في git log يفحص محتوى الملفات ليعثر على الالتزامات التي أضافت أو حذفت نصاً برمجياً محدداً.
- للمراجعة
- 02 Pathspec Separator (--) فاصل مسار الملفات (--)
- علامة الشرطتين التي توضع قبل أسماء الملفات لفصل خيارات الأمر عن مسارات القرص الصلب.
- للمراجعة
- 03 Rename Following (--follow) تتبع إعادة التسمية (--follow)
- خيار يجعل git log يواصل تتبع تاريخ الملف حتى عبر عمليات النقل أو تغيير الاسم السابقة.
- للمراجعة
- 04 Shortlog Summary ملخص المساهمين (git shortlog)
- أمر مدمج في Git يجمع الالتزامات حسب اسم المؤلف لإعداد تقارير المساهمات وملاحظات الإصدار.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 GREP GREP
- Global Regular Expression Print
- آلية البحث النصي بالأنماط المستخدمة في الخيار --grep لتصفية رسائل الالتزامات.
- للمراجعة
- 02 ISO ISO
- International Organization for Standardization
- معيار صياغة التاريخ الرقمي القياسي YYYY-MM-DD المعتمد في فلاتر التاريخ.
- للمراجعة
- 03 REGEX REGEX
- Regular Expression
- التعبيرات النمطية المدعومة في فلاتر البحث لمطابقة النصوص المرنة.
- للمراجعة
- 04 CLI CLI
- Command Line Interface
- واجهة سطر الأوامر التي تُنفذ فيها استعلامات تصفية السجل وتنسيقه.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
نفّذ الأمر git log --grep="init" -i --oneline ثم git log --since="1 month ago" --oneline لتجربة تصفية السجل بالرسالة والتاريخ.
-
ابحث عن نص برمجي داخل تاريخ الكود عبر git log -S "html" --oneline ثم استخرج إحصائية المساهمين بالأمر git shortlog -sn.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
أي خيار في الأمر git log يصفّي السجل ليعرض فقط الالتزامات التي أنشأها مطور محدد؟
يُستخدم الخيار --author لتصفية الالتزامات حسب اسم المؤلف أو بريده الإلكتروني.
ما الفرق الجوهري بين الأمر git log --grep="auth" والأمر git log -S "auth"؟
يبحث --grep داخل نصوص رسائل الالتزامات فقط، بينما يبحث -S داخل محتوى الكود المضاف أو المحذوف فعلياً.
تؤدي إضافة الخيار -i مع الأمر git log --grep="bug" إلى البحث عن الكلمة دون حساسية لحالة الأحرف الكبيرة أو الصغيرة.
صواب؛ يجعل الخيار -i عملية البحث تطابق الكلمة بأي حالة أحرف كبيرة أو صغيرة.
أي خيار يضمن استمرار git log في تتبع تاريخ ملف محدد حتى قبل إعادة تسميته بالأمر git mv؟
يتتبع الخيار --follow تاريخ الملف عبر عمليات النقل وإعادة التسمية السابقة.
لماذا نضع علامة الشرطتين (--) قبل اسم الملف في الأمر git log --oneline -- index.html؟
تُخبر الشرطتان (--) نظام Git صراحةً أن المعامل التالي هو مسار ملف وليس اسم مرجع.
في قالب التنسيق git log --pretty=format:"%h - %an: %s"، ماذا يطبع الرمز التعويضي %h؟
يطبع الرمز الصغير %h البصمة الرقمية المختصرة للالتزام، بينما يطبع %H البصمة الكاملة.
أي أمر يطبع ملخصاً بعدد الالتزامات الإجمالي لكل مؤلف مرتباً تنازلياً من الأكثر مساهمة إلى الأقل؟
يلخص الأمر git shortlog -sn عدد الالتزامات لكل مطور ويرتبهم رقمياً بشكل تنازلي.
يقبل الخيار --since في أمر git log التواريخ الرقمية فقط مثل "2026-01-01" ويرفض العبارات النسبية مثل "2 weeks ago".
خطأ؛ يدعم Git العبارات الزمنية النسبية مثل "yesterday" و"2 weeks ago" بمرونة عالية.