طريقة استعادة ملف محذوف في Git
يعتمد الأمر الصحيح على شيء واحد: إلى أي مدى وصل الحذف. إليك الحالات الثلاث، وطريقة العثور على الإيداع الذي أزال الملف، وما لا يستطيع Git إعادته.
بقلم Kodmora
شركة البرمجيات المطوّرة لـGitTree
- التراجع والاستعادة
- سجل الإيداعات
في هذه الصفحة
لاستعادة ملف محذوف لم تودعه بعد، نفّذ `git restore path/to/file`. وإن كان الحذف داخل إيداع، فاعثر على ذلك الإيداع باستخدام git log --diff-filter=D -- path/to/file، ثم نفّذ git restore --source=<commit>^ -- path/to/file. يستطيع Git إعادة أي شيء خزّنه يومًا، فالملف الذي أُودع يمكن استعادته في أغلب الأحوال.
| ما حدث | الأمر |
|---|---|
| حُذف ولم يُجهَّز | git restore path/to/file |
| حُذف وجُهِّز الحذف | git restore --staged --worktree path/to/file |
| حُذف داخل إيداع | git restore --source=<commit>^ -- path/to/file |
كيف أستعيد ملفًا حذفته للتو؟
إذا أظهر git status الملف تحت Changes not staged for commit، فانسخه من الفهرس:
git restore src/app.tsكيف أستعيد ملفًا بعد git rm؟
يحذف git rm الملف ويجهّز الحذف، فيظهر تحت Changes to be committed. استعد الفهرس ومجلد العمل معًا من HEAD:
git restore --staged --worktree src/app.tsكيف أستعيد ملفًا حُذف في إيداع سابق؟
ابحث أولًا عن الإيداع الذي حذفه. يعرض --diff-filter=D عمليات الحذف فقط:
git log --oneline --diff-filter=D -- src/app.tsلم يعد الملف في ذلك الإيداع، لكنه موجود في أصله. تعني ^ أصل الإيداع، فيستعيد هذا الأمر آخر نسخة قبل الحذف:
git restore --source=4f2a9c1^ -- src/app.tsيعود الملف إلى مجلد العمل كتغيير جديد. راجعه ثم جهّزه وأودعه كأي تعديل آخر. في إصدارات Git الأقدم من 2.23، يؤدي git checkout 4f2a9c1^ -- src/app.ts المهمة نفسها ويجهّز الملف أيضًا.
ماذا لو لم أتذكر المسار كاملًا؟
ابحث عن اسم الملف في كل الفروع. أبقِ علامات الاقتباس حتى يوسّع Git النمط بدلًا من الطرفية:
git log --all --diff-filter=D --name-only --oneline -- "**/app.ts"ما الذي لا يستطيع Git إعادته؟
- ملف لم يُجهَّز أو يُودع قط. لم يخزّنه Git أبدًا. تحقق من السجل المحلي في محررك أو من النسخ الاحتياطي لنظامك.
- الملفات التي أزالها `git clean`. كانت غير متتبعة، فلا يحتفظ Git بنسخة منها.
- التعديلات غير المجهزة التي استبدلها `git restore`. يكتب الأمر فوقها، فلا تنفذه إلا إذا كنت تقصد ذلك.
قد تجد ملفًا جُهِّز مرة ثم ضاع باستخدام git fsck --lost-found، الذي يعرض الكائنات التي لا يشير إليها شيء. يغطي مقال التراجع عن reset وrebase وcommit الإيداعات المفقودة، ويوضح درس سجل الملف وblame طريقة تتبع ملف عبر الزمن، ويشرح دليل التجاهل والتنظيف ما يحفظه GitTree أولًا.
طريقة استعادة ملف في GitTree
اضغط Undo أولًا
إذا تجاهل GitTree الملف أو نظّفه، فاضغط Undo في شريط الأدوات. يحفظ GitTree لقطة استعادة تحت
refs/ogt/trashقبل أن يزيل أي شيء.ابحث في السجل
استخدم البحث في رسم الإيداعات للعثور على الإيداع الذي عدّل الملف، ثم افتح ذلك الإيداع لقراءة نسخته.
استخدم Lost & Found للإيداعات المفقودة
اختر Tools → Lost & Found للبحث عن إيداعات لم يعد يشير إليها أي فرع.

الأسئلة الشائعة
ما الفرق بين git restore وgit checkout؟
أضيف git restore في Git 2.23 ليؤدي مهمة واحدة: استعادة الملفات. أما git checkout فيبدّل الفروع أيضًا، ما جعل إساءة استخدامه سهلة.
كيف أعرف متى حُذف ملف؟
نفّذ git log --diff-filter=D -- path/to/file. يعرض الإيداع الذي أزاله مع مؤلفه وتاريخه.
لماذا يقول git restore إن pathspec لا يطابق شيئًا؟
لا يعرف Git ذلك المسار في المصدر الذي اخترته. إن حُذف الملف في إيداع، فاستعده من أصل ذلك الإيداع باستخدام --source=<commit>^.
هل يمكنني استعادة مجلد محذوف؟
نعم. مرّر مسار المجلد بدلًا من الملف، مثل git restore --source=<commit>^ -- src/utils.
هل يُودع الملف المستعاد تلقائيًا؟
لا. يظهر كتغيير في مجلد العمل. جهّزه وأودعه عندما تكون جاهزًا.
المصادر
تحققنا من المعلومات عن المنتجات الأخرى من صفحاتها الرسمية بتاريخ 7 نوفمبر 2026. الأسعار والميزات تتغير، وصفحات الشركات هي المرجع.