B52 · المجلة

ثلاثة أوامر Git قبل Commit: ما الفرق بين diff وcached وHEAD؟

افصل التعديل الموجود في ملفك عن التعديل المجهز للحفظ، ثم راجع ما سيدخل الالتزام فعلًا بأوامر قراءة فقط.

تصميم B52 توضيحي: قبل أن تحفظ التعديل — افصل المجهز عن غير المجهز
تصميم توضيحي أصلي © B52 Arabic 2026؛ ليس لقطة واجهة أو نتيجة اختبار.

قد يكون الملف نفسه معدّلًا ومجهزًا للحفظ في الوقت نفسه: جهزت نسخة منه، ثم أكملت الكتابة بعد ذلك. لهذا لا تجيب كل أوامر git diff عن السؤال نفسه، وقد ترى نتيجة فارغة في مقارنة بينما توجد تغييرات في مقارنة أخرى.

اسأل عن المكان الذي تقارنه

الأمر المقارنة
git diff ملف العمل مقارنة بمنطقة التجهيز
git diff --cached منطقة التجهيز مقارنة بآخر التزام
git diff HEAD ملف العمل مقارنة بآخر التزام

هذه أوامر عرض لا تحفظ التعديلات ولا ترفعها. وتوضح وثائق Git أن --staged مرادف لـ--cached. إذا كان المستودع جديدًا بلا أول التزام، فلا تفترض وجود HEAD صالح لكل مثال.

ثلاثة أماكن.. وثلاث مقارنات
ثلاثة أماكن.. وثلاث مقارنات · مخطط أصلي © B52 Arabic 2026؛ ليس لقطة واجهة.

مثال صغير في مستودع تجريبي

git status --short
git diff -- notes.txt
git diff --cached -- notes.txt
git diff HEAD -- notes.txt

للتجربة، اجعل notes.txt ملفًا عاديًا محفوظًا في التزام سابق. عدّل سطرًا، وجهزه بالطريقة المعتادة، ثم عدّل السطر مرة أخرى دون تجهيز التعديل الثاني. راقب كيف يعرض cached ما جهزته، بينما يعرض diff الفرق اللاحق الذي لم تجهزه.

قبل حفظ الالتزام

  • راجع أسماء الملفات من git status، ولا تفترض أن كل تعديل يخص مهمتك.
  • افتح الفرق المجهز نفسه، لا الفرق الكلي وحده.
  • اقرأ الإضافات والحذف، وراجع أي ملف إعداد أو بيانات شخصية.
  • احتفظ بالتعديلات غير المتعلقة بعملك دون إعادة ضبط جماعي.

وجود فرق صحيح لا يثبت أن البرنامج يعمل، ونجاح الاختبار لا يخبرك تلقائيًا بأي ملفات جهزتها. اجمع الأمرين: راجع نطاق الحفظ وسجّل ما اختبرته فعلًا. وإذا أردت فحص ملف ذي مسافات في اسمه، ضعه بين علامتي اقتباس، وأبقِ -- لفصل مسار الملف عن الخيارات.

المصادر والمراجع

دليل أصلي من B52؛ راجع الروابط للمعلومات المرجعية.

شارك الفائدة

أرسل الموضوع لمن يهتم، أو احتفظ برابطه للرجوع إليه.

اقرأ أيضًا

ثلاثة أوامر Git قبل Commit: ما الفرق بين diff وcached وHEAD؟ | B52 Arabic