في هذا الدرس 6تصفّح المواضيع
بعد تسجيل عدة لقطات دائمة بالأمر git commit، ستحتاج إلى أداة دقيقة لمراجعة تاريخ المشروع ومعرفة متى ولماذا أُجري كل تعديل. يقرأ الأمر git log قاعدة بيانات المستودع المحلي ويعرض سجل الالتزامات بترتيب زمني عكسي؛ أي يبدأ من أحدث التزام يشير إليه المؤشر HEAD ثم يتتبع رابط الأب رجوعاً حتى أول لقطة في المشروع.
عند تشغيل git log بدون خيارات إضافية، يطبع النظام أربع معلومات أساسية لكل التزام وهي البصمة الرقمية الكاملة SHA-1 المكونة من 40 محرفاً، وهوية المؤلف Author، والتوقيت الزمني الدقيق Date، ونص رسالة الالتزام الكامل.
# Inspect the full reverse-chronological commit history
git log
# Navigation inside the default terminal pager (less):
# Press Space to scroll down, b to scroll up, q to quit
في المشاريع النشطة التي تضم مئات الالتزامات، يستهلك العرض التفصيلي الكامل مساحة الشاشة بسرعة. ولتسريع الفحص اليومي، يوفر الأمر git log خيارات لضبط عدد النتائج وكثافة العرض:
- تحديد عدد الالتزامات المعروضة (
-n): يكتفي الأمرgit log -n 3أو صيغته المختصرةgit log -3بطباعة أحدث 3 التزامات فقط ثم يتوقف فوراً. - العرض المدمج في سطر واحد (
--oneline): يدمج بيانات كل التزام في سطر واحد يضم أول 7 محارف من البصمة الرقمية متبوعة بعنوان الرسالة، ويمكن دمجه مع--decorateلإظهار موقع المؤشرHEAD.
# Show only the 3 most recent commits
git log -n 3
# Condense history to one line per commit with pointer labels
git log --oneline --decorate -n 5
كثيراً ما تحتاج أثناء مراجعة السجل إلى معرفة ما هي الملفات التي تغيرت في كل التزام وحجم التعديل التقريبي دون قراءة الشفرة البرمجية سطراً بسطر. يضيف الخيار --stat تقريراً إحصائياً منظماً أسفل كل التزام.
يعرض الأمر git log --stat مسار كل ملف متأثر، وإجمالي عدد الأسطر المعدلة فيه، مع شريط بصري من علامات الجمع + للأسطر المضافة وعلامات الطرح - للأسطر المحذوفة، متبوعاً بملخص إجمالي لعدد الملفات والأسطر.
# Display file change statistics for recent commits
git log --stat -n 2
# Combine compact one-line headers with file stats
git log --oneline --stat -n 3
عندما ترغب في التدقيق البرمجي العميق ورؤية الأسطر الفعلية التي أُضيفت أو حُذفت داخل كل التزام، استخدم الخيار -p أو صيغته الكاملة --patch. يطبع الأمر git log -p بيانات الالتزام متبوعةً برقعة التعديلات التفصيلية سطراً بسطر.
ونظراً لأن عرض الرقع البرمجية لجميع الالتزامات ينتج مخرجات طويلة جداً، يُنصح دائماً بدمج الخيار -p مع محدد العدد مثل git log -p -n 2 لحصر الفحص في أحدث التزامين فقط.
# Inspect the full code patch for the latest 2 commits
git log -p -n 2
# Combine one-line headers with inline patches
git log --oneline -p -n 1
يخزن نظام Git سجل المشروع داخلياً على هيئة رسم بياني موجه غير دوري (DAG) يشير فيه كل التزام إلى الالتزام الأب الذي سبقه. ويمكنك رسم هذه البنية بصرياً داخل الطرفية مباشرة باستخدام الخيار --graph.
يرسم الأمر المركب git log --oneline --decorate --graph شجرة نصية واضحة على الهامش الأيسر تمثل كل التزام بعلامة نجمة * وتصل بينها بخطوط رأسية |، مما يمنحك خريطة بصرية فورية لتسلسل اللقطات وموضع مؤشر HEAD.
# Draw a compact ASCII commit graph in the terminal
git log --oneline --decorate --graph
# Limit the visual graph to the latest 5 commits
git log --oneline --decorate --graph -n 5
يلخص الجدول المرجعي التالي أهم خيارات عرض السجل في الأمر git log ومتى تستخدم كلاً منها في عملك اليومي:
| الأمر أو الخيار | كثافة المخرجات | التفاصيل المعروضة | حالة الاستخدام المثلى |
|---|---|---|---|
git log | تفصيلي متعدد الأسطر | بصمة 40 محرفاً، المؤلف، التاريخ، والرسالة | قراءة الأوصاف الكاملة للالتزامات |
git log -n <N> | مقيد بالعدد | يتوقف بعد طباعة أحدث N التزامات | التحقق السريع من آخر اللقطات المسجلة |
git log --oneline | سطر واحد لكل التزام | بصمة مختصرة من 7 محارف وعنوان الرسالة | المسح البصري السريع للسجلات الطويلة |
git log --stat | تقرير إحصائي للملفات | مسارات الملفات المعدلة وعدد أسطر الإضافة والحذف | معرفة حجم التغيير والملفات المتأثرة |
git log -p | رقعة الكود الكاملة | الأسطر البرمجية المضافة + والمحذوفة - | المراجعة الدقيقة للتعديلات البرمجية |
git log --graph | شجرة نصية مرئية | عقد الالتزامات * وروابط الأبوة | تتبع تسلسل السجل وموقع المؤشر HEAD |
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
تعلمت في هذا الدرس قراءة سجل الالتزامات الزمني العكسي عبر الأمر git log، وتحديد عدد النتائج بالخيار -n، وضغط العرض بـ --oneline، وفحص إحصائيات الملفات عبر --stat، واستعراض التعديلات التفصيلية بالخيار -p، ورسم شجرة السجل بـ --graph. الخطوة التالية: انتقل الآن إلى الدرس 12 «البحث المتقدم وتخصيص مخرجات السجل في Git» لتصفية الالتزامات بالتاريخ والمؤلف والكلمات المفتاحية.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Reverse Chronological Order الترتيب الزمني العكسي
- نظام العرض الافتراضي في git log حيث يظهر أحدث التزام (HEAD) في الأعلى ثم يتدرج السجل رجوعاً نحو الأقدم.
- للمراجعة
- 02 Abbreviated Commit Hash البصمة الرقمية المختصرة
- أول 7 محارف ست عشرية من بصمة SHA-1 الكاملة، يعرضها الخيار --oneline لتمييز كل التزام باختصار ووضوح.
- للمراجعة
- 03 Diffstat Histogram تقرير إحصائيات الملفات (--stat)
- ملخص رقمي وبصري ينتجه الخيار --stat أسفل كل التزام لبيان الملفات المعدلة وعدد أسطر الإضافة والحذف.
- للمراجعة
- 04 Terminal Pager (less) عارض صفحات الطرفية (less)
- الأداة التفاعلية التي تقسم مخرجات git log الطويلة إلى صفحات قابلة للتمرير وتُغلق بالضغط على الحرف q.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 SHA-1 SHA-1
- Secure Hash Algorithm 1
- خوارزمية التجزئة التي تولد البصمة الفريدة المكونة من 40 محرفاً لكل التزام في السجل.
- للمراجعة
- 02 DAG DAG
- Directed Acyclic Graph
- الرسم البياني الموجه غير الدوري الذي يربط كل التزام بأبيه ويعرضه الخيار --graph.
- للمراجعة
- 03 ASCII ASCII
- American Standard Code for Information Interchange
- المحارف النصية القياسية (* و|) التي يوظفها الخيار --graph لرسم شجرة الالتزامات داخل الطرفية.
- للمراجعة
- 04 HEAD HEAD
- Current Active Snapshot Pointer
- المؤشر المرجعي الذي يحدد اللقطة الحالية التي يبدأ الأمر git log سرد السجل انطلاقاً منها.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
نفّذ الأمر git log -n 2 لقراءة البيانات الكاملة لآخر التزامين، ثم شغّل git log --oneline --decorate -n 5 لمقارنته بالعرض المختصر.
-
شغّل الأمر git log --stat -n 2 ثم git log -p -n 1 في مستودعك التجريبي لمقارنة الملخص الإحصائي برقعة التعديلات الكاملة.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
بأي ترتيب زمني يعرض الأمر git log الالتزامات افتراضياً؟
يعرض الأمر git log الالتزامات بترتيب زمني عكسي بدءاً من الأحدث عند HEAD نزولاً إلى الأقدم.
أي مفتاح في لوحة المفاتيح يُخرجك من عارض الصفحات (less) أثناء تصفح سجل git log الطويل؟
يؤدي الضغط على الحرف q إلى إغلاق عارض الصفحات والعودة فوراً إلى سطر الأوامر.
أي أمر يعرض أحدث 4 التزامات فقط مع ضغط كل التزام في سطر واحد مختصر؟
يدمج الأمر git log --oneline -n 4 بين العرض المختصر في سطر واحد وتحديد العدد بأربعة التزامات.
يعرض الخيار --oneline البصمة الرقمية المختصرة (عادة 7 محارف) متبوعة بعنوان رسالة الالتزام في سطر واحد.
صواب؛ يختصر الخيار --oneline كل التزام في سطر واحد يضم البصمة القصيرة وعنوان الرسالة.
ما المعلومات التي يضيفها الخيار git log --stat أسفل كل التزام؟
يعرض الخيار --stat قائمة الملفات التي تغيرت في الالتزام مع عدد الأسطر المضافة والمحذوفة لكل ملف.
أي خيار في الأمر git log يطبع رقعة التعديلات الكاملة (الأسطر الفعلية المضافة والمحذوفة) لكل التزام؟
يعرض الخيار -p (أو --patch) التفاصيل البرمجية الدقيقة للأسطر التي أُضيفت أو حُذفت في كل التزام.
إلى ماذا يرمز حرف النجمة (*) في مخرجات الأمر git log --oneline --graph؟
تمثل كل نجمة (*) عقدة التزام فعلية في شجرة السجل الزمنية للمستودع.
يؤدي تشغيل الأمر git log -p إلى تعديل ملفات مجلد العمل فعلياً وإرجاعها للإصدارات القديمة.
خطأ؛ فالأمر git log بجميع خياراته هو أداة فحص للقراءة فقط ولا يغير أي ملف في مجلد العمل.