انتقل إلى محتوى الدرس
الدرس 08
دورة Version Control

حفظ اللقطات الدائمة عبر الأمر git commitGit Commit

سجّل لقطات دائمة في مستودعك المحلي عبر الأمر git commit، واكتب رسائل التزام احترافية واضحة، وافهم مكونات كائن الالتزام ومتى نستخدم الخيار -a بأمان.
أقسام الدرس
6
الأمثلة
4
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

بعد تجهيز التعديلات المطلوبة داخل منطقة التجهيز (.git/index)، يأتي دور الأمر git commit لتحويل تلك المسودة المجهزة إلى لقطة دائمة محفوظة في المستودع المحلي:

  • حفظ المجهز فقط: لا يدخل في اللقطة إلا ما أُضيف إلى منطقة التجهيز، أما التعديلات غير المجهزة والملفات غير المتتبعة فتبقى كما هي في مجلد العمل.
  • ملخص التأكيد الفوري: يطبع Git فور الحفظ اسم الفرع الحالي، والبصمة المختصرة للالتزام الجديد، وعنوان الرسالة، وعدد الملفات والأسطر المضافة أو المحذوفة.
حفظ اللقطات الدائمة بالأمر git commit ومكونات كائن الالتزام
Shell
git add index.html
git commit -m "Create initial home page structure"
# [main (root-commit) 4e9d1a2] Create initial home page structure
#  1 file changed, 18 insertions(+)

يشترط نظام Git إرفاق رسالة نصية واضحة مع كل عملية التزام، ويرفض إتمام الحفظ إذا تُركت الرسالة فارغة. ويمكنك كتابة الرسالة بطريقتين:

  • الرسالة السطرية المباشرة (-m): تمرير الخيار git commit -m "Subject" لكتابة الرسالة مباشرة في الطرفية، ويمكن تكرار -m مرة ثانية لإضافة فقرة تفصيلية تحت العنوان.
  • فتح المحرر النصي: تشغيل git commit بدون -m يفتح المحرر المضبوط في core.editor لكتابة رسالة متعددة الأسطر براحة تامة.
Shell
# Commit with a concise subject and explanatory body
git add styles.css
git commit -m "Add responsive navbar styles" \
  -m "Use CSS Flexbox and collapse menu below 768px."

ماذا يخزن نظام Git فعلياً داخل قاعدة الكائنات عندما تنفذ git commit؟ ينشئ النظام كائن التزام (Commit Object) يضم خمسة عناصر متكاملة:

  • 1. بصمة شجرة اللقطة (tree): مؤشر إلى الشجرة الجذرية التي تمثل محتويات وأسماء كافة ملفات المشروع في تلك اللحظة.
  • 2. بصمة الالتزام الأب (parent): رابط يشير إلى اللقطة السابقة مباشرة ليرسم السلسلة الزمنية للمشروع.
  • 3. بيانات المؤلف (author) و4. المسجل (committer): الاسم والبريد والتوقيت الزمني الدقيق.
  • 5. نص رسالة الالتزام: الوصف الهندسي الكامل للتغيير.

إذا كانت تعديلاتك مقتصرة على ملفات متتبعة مسبقاً، يمكنك اختصار خطوة التجهيز عبر تمرير الخيار -a مع git commit ليقوم النظام بتجهيز جميع الملفات المتتبعة المعدلة وحفظها في خطوة واحدة:

  • الدمج السريع (-a -m أو -am): الأمر git commit -a -m "Update footer links" يجهز تعديلات الملفات المتتبعة ويسجل اللقطة فوراً.
  • تنبيه جوهري: الخيار -a لا يشمل أبداً الملفات الجديدة غير المتتبعة (??)؛ إذ لا بد من تمرير الملف الجديد عبر git add أول مرة.
Shell
# Edit an already tracked file and commit in one step
echo "/* dark theme */" >> styles.css
git commit -a -m "Add dark theme comment to stylesheet"
git status -s

تلتزم فرق هندسة البرمجيات الاحترافية بمعيارين ذهبيين عند حفظ اللقطات: الالتزام الذري (Atomic Commit) ومعيار صياغة الرسائل الاحترافية:

  • الالتزام الذري المستقل: يجب أن يمثل كل التزام تعديلاً منطقياً واحداً متماسكاً (إصلاح خطأ محدد أو إضافة مكون واحد) ليسهل فحصه أو التراجع عنه مستقبلاً دون التأثير على غيره.
  • صيغة الأمر المباشر في العنوان: يُكتب سطر العنوان بصيغة الفعل المباشر في حدود 50 محرفاً مثل Add login validation أو Fix header alignment وليس بصيغة الماضي العشوائية.
Shell
# Good atomic imperative commit messages:
git commit -m "Add keyboard focus styles to modal buttons"
# Avoid vague messages like "update" or "fix stuff"

يلخص الجدول التالي صيغ وخيارات الأمر git commit قبل الانتقال إلى حذف ونقل الملفات عبر git rm وgit mv في الدرس التاسع:

الأسلوبمثال الصياغةالسلوك الهندسي الدقيق
حفظ المجهز برسالة سطريةgit commit -m "Add hero banner"حفظ التغييرات الموجودة في منطقة التجهيز فقط
حفظ بعنوان وفقرة تفصيليةgit commit -m "Title" -m "Body"تسجيل عنوان موجز متبوع بفقرة توضيحية مفصلة
الحفظ السريع للمتتبعgit commit -a -m "Update CSS"تجهيز وحفظ جميع الملفات المتتبعة المعدلة بخطوة واحدة
الحفظ عبر المحرر النصيgit commitفتح المحرر الافتراضي لكتابة رسالة متعددة الأسطر
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس حفظ اللقطات الدائمة بالأمر git commit -m، وكتابة الرسائل متعددة الأسطر، وفهم المكونات الخمسة لكائن الالتزام، واستخدام الخيار السريع -a مع الملفات المتتبعة، وتطبيق معايير الالتزام الذري. الخطوة التالية: انتقل الآن إلى الدرس رقم 9 «حذف ونقل وإعادة تسمية الملفات عبر git rm وgit mv».

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Commit Object كائن الالتزام Commit
كائن دائم في قاعدة بيانات Git يحفظ مؤشر شجرة اللقطة والالتزام الأب وبيانات المؤلف ونص الرسالة.
للمراجعة
02 Root Commit الالتزام الجذري الأول
أول لقطة التزام تُسجل في تاريخ المستودع ولا يسبقها أي التزام أب.
للمراجعة
03 Atomic Commit الالتزام الذري المتماسك
التزام يضم تعديلاً منطقياً واحداً مكتملاً ومستقلاً دون خلط تعديلات متفرقة غير مترابطة.
للمراجعة
04 Imperative Mood Subject عنوان بصيغة الفعل المباشر
صياغة سطر عنوان الالتزام بفعل أمر مباشر يصف بدقة ما يفعله هذا الالتزام عند تطبيقه.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 SHA-1 SHA-1
40-Hex Commit Identifier
البصمة الرقمية الفريدة التي تميز كل كائن التزام في السجل.
للمراجعة
02 TREE TREE
Snapshot Directory Tree Object
كائن الشجرة الذي يشير إليه الالتزام لتمثيل هيكل المجلدات والملفات في اللقطة.
للمراجعة
03 HEAD HEAD
Current Branch Tip Reference
المؤشر الذي يتقدم تلقائياً ليشير إلى أحدث لقطة فور نجاح تنفيذ git commit.
للمراجعة
04 MSG MSG
Commit Explanation Message
الرسالة التوضيحية المرفقة بالالتزام عبر الخيار -m أو المحرر.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. بدّل بين تبويبات المحاكي التفاعلي الثلاثة لمقارنة الحفظ العادي بـ -m والرسالة المفصلة والخيار السريع -a -m.

  2. جهّز ملفاً معدلاً ونفّذ git commit مع تكرار الخيار -m لكتابة عنوان موجز وفقرة شرح واضحة.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

من أي منطقة يقرأ الأمر القياسي git commit -m التعديلات لإنشاء اللقطة الدائمة؟

يسجل الأمر git commit اللقطة الدائمة بناءً على المحتويات الموجودة في منطقة التجهيز (.git/index) حصراً.

02

أي خيار يتيح لك كتابة رسالة الالتزام مباشرة داخل سطر الأوامر؟

يُستخدم الخيار -m لتمرير نص رسالة الالتزام مباشرة في الطرفية.

03

ماذا يفعل تنفيذ الأمر git commit -a -m "Update styles"؟

يقوم الخيار -a بتجهيز كافة الملفات المتتبعة المعدلة أو المحذوفة وحفظها في لقطة واحدة، مع تجاهل الملفات غير المتتبعة.

04

يقوم الأمر git commit -a -m "msg" بتجهيز وحفظ الملفات الجديدة غير المتتبعة (??) التي لم يسبق إضافتها من قبل.

خطأ؛ فالخيار -a يؤثر على الملفات المتتبعة مسبقاً فقط، أما الملفات الجديدة فلا بد من إضافتها بالأمر git add.

05

أي عنصر مما يلي لا يُخزَّن داخل كائن الالتزام (Commit Object) في Git؟

يحفظ كائن الالتزام بصمة الشجرة والأب والمؤلف والرسالة، ولا يحفظ إعدادات شاشة نظام التشغيل.

06

يجمع الالتزام الذري (Atomic Commit) تعديلاً منطقياً واحداً متماسكاً بدلاً من خلط تغييرات متفرقة غير مترابطة.

صواب؛ فالالتزامات الذرية تسهل مراجعة الكود وتتبع الأخطاء والتراجع الآمن عند الحاجة.

07

أي سطر عنوان مما يلي يلتزم بالمعيار الاحترافي لصياغة رسائل الالتزام (صيغة الفعل المباشر)؟

العبارة "Add responsive navigation bar" تبدأ بفعل مباشر واضح يصف الوظيفة المضافة بدقة.

08

كم التزاماً أباً (Parent Commit) يمتلكه الالتزام الأول (root-commit) في مستودع Git جديد؟

يمثل الالتزام الجذري نقطة البداية الأولى للتاريخ ولذلك لا يمتلك أي التزام أب (صفر).