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>...]الخيارات
اختيار الخيار المناسب
ما الذي يقارنه git diff
اختر الجانبين اللذين تريد مقارنتهما
| الأمر | الجانب الأيسر | الجانب الأيمن |
|---|---|---|
git diff | منطقة التجهيز | ملفات العمل |
git diff --staged | آخر commit | منطقة التجهيز |
git diff HEAD | آخر commit | ملفات العمل |
git diff A B | Commit A | Commit B |
أمثلة
تغييرات غير مجهَّزة
git diffما تغيّر في ملفاتك ولم يُجهَّز بعد.
تغييرات مجهَّزة
git diff --stagedما سيحتويه الـ commit التالي.
commitان
git diff HEAD~1 HEADما غيّره آخر commit.
فرعان
git diff main feature/loginكل ما يختلف بين فرعين.
أمثلة على سير العمل
git diffقراءة ما غيّرته
git add app.jsجهّزه
git diff --stagedقراءة ما سيُسجَّل
git commit -m "Add to cart"Commit
git diff main...feature/login --statالملفات التي غيّرها الفرع منذ انفصاله عن main
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.
الأسئلة الشائعة
git diff --staged (أو مرادفه git diff --cached).
يقارن git diff HEAD آخر commit بملفات عملك.
git show <commit>، أو git diff <commit>~1 <commit>.