git diff

اللقطات الأساسية

عرض التغييرات بين ملفاتك ومنطقة التجهيز والـ commits


يعرض الأمر 'git diff' الأسطر التي تغيّرت بالضبط. دون وسائط يقارن ملفات العمل بمنطقة التجهيز — التغييرات التي لم تجهّزها بعد. ومع --staged يقارن منطقة التجهيز بآخر commit — أي ما سيحتويه الـ commit التالي. أعطه commits أو فروعًا لمقارنة أي نسختين من المشروع.

الصيغة

git diff [<options>] [<commit>] [--] [<path>...]
git diff [<options>] --staged [<commit>] [--] [<path>...]
git diff [<options>] <commit> <commit> [--] [<path>...]
[ ] اختياري| أو<arg> قيمة تُستبدل... قابل للتكرار--flag خيار

الخيارات

انقر على أي خيار لتوسيعه

مبتدئ (4)

مقارنة منطقة التجهيز بآخر commit: التغييرات التي سيسجّلها الـ commit التالي. --cached مرادف لها.

موصى بهراجع بالضبط ما أنت على وشك تسجيله

مثال

git diff --staged

عرض ملخّص: كل ملف متغيّر مع عدد أسطره المتغيّرة، ثم المجموع.

موصى بهنظرة سريعة على حجم التغيير

مثال

git diff --stat

عرض أسماء الملفات المتغيّرة فقط.

عند الحاجةسرد الملفات المتغيّرة، مثلًا لتمريرها إلى أداة فحص

مثال

git diff --name-only

عرض أسماء الملفات المتغيّرة مع حرف: A مضاف، M معدَّل، D محذوف، R معاد تسميته.

عند الحاجةمعرفة الملفات التي أُضيفت أو عُدِّلت أو حُذفت

مثال

git diff --name-status

اختيار الخيار المناسب

ما الذي يقارنه git diff

اختر الجانبين اللذين تريد مقارنتهما

الأمرالجانب الأيسرالجانب الأيمن
git diffمنطقة التجهيزملفات العمل
git diff --stagedآخر commitمنطقة التجهيز
git diff HEADآخر commitملفات العمل
git diff A BCommit ACommit B

أمثلة

تغييرات غير مجهَّزة

git diff

ما تغيّر في ملفاتك ولم يُجهَّز بعد.


تغييرات مجهَّزة

git diff --staged

ما سيحتويه الـ commit التالي.


commitان

git diff HEAD~1 HEAD

ما غيّره آخر commit.


فرعان

git diff main feature/login

كل ما يختلف بين فرعين.

أمثلة على سير العمل

1
git diff

قراءة ما غيّرته

2
git add app.js

جهّزه

3
git diff --staged

قراءة ما سيُسجَّل

4
git commit -m "Add to cart"

Commit

1
git diff main...feature/login --stat

الملفات التي غيّرها الفرع منذ انفصاله عن main

2
git diff main...feature/login

التغييرات كاملة

حل المشكلات

لا يعرض git diff شيئًا رغم تغيّر الملفات

السبب: التغييرات مجهَّزة بالفعل

استخدم git diff --staged (أو git diff HEAD للاثنين)

ملف جديد لا يظهر في الـ diff

السبب: الملفات غير المتتبَّعة لا تُقارَن

جهّزه بـ git add ثم استخدم git diff --staged

الملف كله يظهر كأنه تغيّر

السبب: تغيّرت نهايات الأسطر أو المسافات

جرّب git diff -w لتجاهل المسافات وتحقّق من core.autocrlf

نصائح وأخطاء شائعة

أفضل الممارسات

  • ✓راجع git diff --staged قبل كل commit.
  • ✓في التغييرات الكبيرة ابدأ بـ --stat ثم اقرأ التفاصيل.
  • ✓قارن الفروع بثلاث نقاط (main...branch) لترى فقط ما أضافه الفرع.

أخطاء متكررة

  • ✗توقّع أن يعرض git diff التغييرات المجهَّزة — لا يفعل؛ استخدم git diff --staged.
  • ✗توقّع رؤية الملفات غير المتتبَّعة في git diff: الملفات الجديدة لا تظهر إلا بعد إضافتها.
  • ✗الخلط في ترتيب commit‏َين: git diff A B يعرض كيفية الانتقال من A إلى B.

الأسئلة الشائعة

A:

git diff --staged (أو مرادفه git diff --cached).

A:

يقارن git diff HEAD آخر commit بملفات عملك.

A:

git show <commit>، أو git diff <commit>~1 <commit>.