ตัวอย่างบทเรียน

قراءة سجل المشروع: أوامر log و diff و show والتنقل في السجل

سجل المشروع ليس مجرد قائمة بالعمليات، بل هو توثيق للقرارات التي اتخذها الفريق. في هذا الدرس، ستتعلم قراءة السجل بطريقة مفيدة: تصفية الالتزامات، ومعرفة التغييرات الدقيقة بين الإصدارات، وفهم تجزئات SHA-1 دون قلق. كما سنوضح كيف تميّز السجل الجيد والمنظم من السجل غير الواضح، لأن ذلك يؤثر مباشرة في طريقة تقييم الفريق لك.

تجزئة الالتزام git log git diff
คุณจะเรียนรู้อะไรในบทเรียนนี้
  • ستتمكن من قراءة سجل المستودع والعثور بسرعة على الالتزام المطلوب حسب المؤلف أو التاريخ أو كلمة مفتاحية.
  • ستفهم كيفية مقارنة إصدارات الملفات على مستويات مختلفة: مجلد العمل، ومنطقة الترحيل، والالتزام.
  • ستتعلم كتابة رسائل الالتزام وفق معايير معتمدة في المجال مثل Conventional Commits.

จุดเริ่มต้นของบทเรียน

سجل الإيداعات بوصفه دفتر يوميات للمشروع

  • يعرض git log السجل مثل دفتر يوميات مقلوب
  • كل إدخال هو لقطة للتغييرات
  • يحتفظ بمعلومات عن من غيّر ومتى وماذا غيّر
  • يتيح رؤية تطوّر الكود

تخيّل أن كل مرة تحفظ فيها التغييرات في Git، فإنك تضيف تدوينة إلى دفتر يوميات التطوير. أمر git log يعرض هذه التدوينات بترتيب زمني عكسي، من الأحدث إلى الأقدم. في هذا الدفتر يوجد التسلسل الزمني الكامل للمشروع: من أجرى كل تعديل، ومتى، وما هي التعديلات تحديدًا. هذا ليس مجرد قائمة تغييرات، بل تاريخ حي لتطوّر الكود. إن القدرة على قراءة هذا السجل وتحليله مهارة أساسية للعمل ضمن فريق؛ فمن خلال سجل الإيداعات ترى كيف نما المشروع، وما القرارات التي اتُخذت، ولماذا. لنلقِ نظرة أعمق على بنية الإيداع الواحد.

قراءة تدوينة الإيداع: الهاش، المؤلف، التاريخ

  • الإيداع (commit): معرّف هاش فريد
  • Author: الشخص الذي أجرى التغيير
  • Date: متى أُجري التغيير
  • الرسالة: ما الذي تغيّر بالضبط

انظر إلى ناتج أمر git log. تبدأ كل تدوينة بسلسلة طويلة من الأحرف؛ هذا هو هاش الإيداع، أي المعرّف الفريد له. بعده مباشرة ترى اسم مؤلف التغيير وتاريخ إدخاله. أسفل ذلك توجد رسالة الإيداع التي كتبها المطور عند حفظ التغييرات. انتبه إلى التنسيق: تظهر أولًا الرسالة البريدية للمؤلف بين علامتي < و >، ثم الطابع الزمني. تساعد هذه البيانات على فهم سياق التغيير، وإذا لزم الأمر التواصل مع المؤلف لطلب توضيحات. الآن بعد أن عرفنا بنية الإيداع، دعونا نفهم المقصود بالهاش ولماذا نحتاج إليه.

#!/bin/bash
cd ~/projects/git-course/
git log -1 --pretty=format:'الإيداع: %H%nالمؤلف: %an <%ae>%nالتاريخ: %ad%n%n    %s'

معرّف الالتزام – مفتاحك إلى تاريخ المشروع

  • المعرّف هو بصمة رقمية للالتزام
  • يعتمد على محتوى الالتزام والبيانات الوصفية
  • تغيير حرف واحد فقط يغيّر المعرّف
  • يتيح الإشارة الدقيقة إلى أي نسخة

معرّف الالتزام ليس مجرد مجموعة عشوائية من الأحرف، بل هو ناتج دالة تشفيرية تحوّل محتوى الالتزام إلى سلسلة فريدة. إذا غيرت حتى بايتًا واحدًا في الالتزام، سيتغيّر المعرّف بالكامل. هذا يضمن سلامة سجل التغييرات. بمعرفة المعرّف، يمكنك الرجوع إلى أي نسخة من الشيفرة كما لو أنك تضع إشارة مرجعية في كتاب. على سبيل المثال، أمر «git checkout» مع المعرّف سينقلك إلى حالة المشروع في لحظة هذا الالتزام. هذا مفيد جدًا عندما تحتاج إلى التراجع عن تغييرات أو تحليل الوقت الذي ظهرت فيه مشكلة معينة. الآن بعد أن فهمنا بنية السجل، دعونا نتعلم كيفية تصفيته—ففي المشاريع الحقيقية قد يكون هناك آلاف الالتزامات.

บทเรียนฉบับเต็มใช้ได้เมื่อสมัครสมาชิก

ฉบับเต็มมีสไลด์เพิ่มอีก 26 สไลด์

วิดีโอ สไลด์ทั้งหมด โน้ต แบบทดสอบ AI ติวเตอร์ และการสัมภาษณ์จะเปิดหลังเข้าสู่ระบบและสมัครสมาชิก

เข้าสู่ระบบหรือลงทะเบียน สมัครสมาชิก

เนื้อหาบทเรียน

  1. سجل الإيداعات بوصفه دفتر يوميات للمشروع
  2. قراءة تدوينة الإيداع: الهاش، المؤلف، التاريخ
  3. معرّف الالتزام – مفتاحك إلى تاريخ المشروع
  4. كيفية العثور على الالتزامات الخاصة بالمؤلف
  5. تصفية الالتزامات حسب التاريخ
  6. البحث داخل رسائل الـ commits
  7. دمج المرشحات
  8. مشكلة قراءة سجل الـ commits
  9. عرض مختصر باستخدام --oneline
  10. تصوّر التفرّعات باستخدام --graph
  11. الصورة الكاملة باستخدام --all
  12. ما هو git diff ولماذا نحتاجه؟
  13. مقارنة التغييرات في مجلد العمل
  14. ما المرحّل للإيداع: git diff --staged
  15. مقارنة أيّ إيداعين
  16. كيف نفحص إيداعًا محددًا بالتفصيل
  17. تطبيق عملي: عرض التغييرات في إيداع
  18. عرض ملف معيّن في الكوميت
  19. البحث عن آخر التغييرات في ملف
  20. تحليل كود الآخرين عبر السجل
  21. البحث عن دالة أُضيفت أو حُذفت
  22. لماذا تهم رسائل الإيداع
  23. هيكل رسالة الإيداع المثالية
  24. Conventional Commits عمليًا
  25. إعادة صياغة commits الضعيفة
  26. لماذا تُعد commits من نوع 'fix' نمطًا ضعيفًا
  27. عدم قابلية التغيير للتجزئة: كوميت واحد لكل مهمة
  28. git add -p: أداة تنقذك للحصول على كوميتات نظيفة
  29. الخلاصة والمهمة

บทความเกี่ยวกับบทเรียนนี้

บทเรียนทั้งหมดในคอร์สนี้

  1. مقدمة: Git من الصفر إلى مُطوّر محترف
  2. لماذا نحتاج إلى Git على الإطلاق — ولماذا لا يُقدّم عليك العمل دونه
  3. تثبيت وإعداد Git لأول استخدام
  4. المستودع الأول: init وadd وcommit وسحر الفهرس
  5. قراءة سجل المشروع: أوامر log و diff و show والتنقل في السجل
  6. الفروع: الواقع الموازي لرمزك البرمجي
  7. إلغاء الأخطاء: الأوامر restore، reset، revert — الاستخدام الصحيح والخطير
  8. GitHub والمستودعات البعيدة: كودك في السحابة
  9. العمل الجماعي: النسخ المتفرعة، الفروع المميزة وطلبات السحب
  10. نزاعات الدمج: لا داعي للذعر — افهمها وحُلّها
  11. سير عمل Git في الفرق الحقيقية: أي سير عمل تختار
  12. الأدوات المتقدمة: rebase، stash، cherry-pick والعلامات (tags)
  13. المشروع النهائي: محاكاة التطوير الجماعي الفعلي