git show
عرض commit أو وسم أو ملف في نسخة معيّنة
يعرض الأمر 'git show' كائنًا واحدًا. للـ commit يطبع المؤلف والتاريخ والرسالة يليها الـ diff الذي أدخله. وللوسم المُعلَّق يعرض رسالة الوسم ثم الـ commit. ومع <commit>:<path> يطبع ملفًا كما كان بالضبط في ذلك الـ commit.
الصيغة
git show [<options>] [<object>...]الخيارات
اختيار الخيار المناسب
show مقابل log مقابل diff
ثلاث طرق للنظر في السجل
| الأمر | يعرض |
|---|---|
git log | قائمة commits |
git show <commit> | commit واحد وتغييراته |
git diff A B | الفرق بين أي نسختين |
أمثلة
آخر commit
git showيعرض HEAD مع الـ diff الخاص به.
أي commit
git show a1b2c3dيعرض ذلك الـ commit.
ملف في commit قديم
git show HEAD~2:app.jsيطبع app.js كما كان قبل commitَين.
الملخّص فقط
git show --statالملفات المتغيّرة بدل الـ diff الكامل.
أمثلة على سير العمل
git log --onelineالعثور عليه
git show --stat a1b2c3dالملفات التي لمسها
git show a1b2c3dالتغيير كاملًا
حل المشكلات
fatal: path 'x' does not exist in 'HEAD~1'
السبب: الملف لم يكن موجودًا في ذلك الـ commit، أو المسار خاطئ
استخدم المسار من جذر المستودع؛ تحقّق بـ git show --stat
commit دمج لا يعرض diff
السبب: الدمج يعرض diff مجمَّعًا لأسطر التعارض فقط
استخدم git show -m أو git diff <merge>^1 <merge>
نصائح وأخطاء شائعة
أفضل الممارسات
- ✓ابدأ بـ --stat في الـ commits الكبيرة.
- ✓استخدم commit:path لقراءة نسخة قديمة دون تغيير ملفاتك.
أخطاء متكررة
- ✗كتابة git show HEAD~1 app.js (مرشِّح) وأنت تقصد HEAD~1:app.js (محتوى الملف).
- ✗استخدام مسار نسبي لمجلدك دون ./ في commit:path — المسارات تبدأ من جذر المستودع.
الأسئلة الشائعة
git show <commit>.
لقراءتها: git show <commit>:<path>. لاستعادتها: git restore --source=<commit> <path>.