تخطَّ إلى المحتوى
GitTree
شروحات Gitقراءة في 5 دقائق

طريقة استعادة stash محذوف أو فرع محذوف أو إيداعات مفقودة في Git

نادرًا ما يضيع stash أسقطته أو فرع حذفته إلى الأبد: يحتفظ Git بالإيداعات حتى يزيلها جمع المهملات. اعثر عليها بسجل المراجع أو git fsck، وتحقّق مما تحويه، وأعدها إلى فرع قبل فوات الأوان.

بقلم Kodmora

شركة البرمجيات المطوّرة لـGitTree

آخر تحديث
  • التخبئة
  • التراجع والاستعادة
في هذه الصفحة

حين تُسقط stash أو تحذف فرعًا يزيل Git الاسم لا الإيداعات. تبقى الإيداعات في المستودع كائنات غير قابلة للوصول حتى يزيلها جمع المهملات، عادةً بعد أسبوعين أو أكثر. اعثر على آخر إيداع لفرع محذوف في سجل المراجع بـ git reflog، واعثر على stash مُسقط بـ git fsck --unreachable، وتحقّق منه بـ git show، ثم احتفظ به بـ git branch rescue <sha>.

يغطي هذا الدليل كل حالة بأوامرها الدقيقة، ويشرح مدة احتفاظ Git بالعمل المفقود وما لا يمكن استعادته، ويعرض الاستعادة نفسها في المفقودات في GitTree، التي تبحث في كل المصادر معًا ولا تسحب ولا تعيد تعيين أي شيء. المفقودات جزء من الخطة المجانية في GitTree. وللتراجع عن reset أو rebase أو amend اقرأ طريقة التراجع عن git reset وrebase والإيداع بدلًا من ذلك.

أين يوجد عمل Git «المفقود» فعلًا

يكون الإيداع قابلًا للوصول حين يقود إليه فرع أو وسم أو المخبأ أو HEAD. وحذف فرع أو إسقاط stash يجعل إيداعاته غير قابلة للوصول، لكنها تبقى في .git/objects. يساعدك سجلّان في العثور عليها: سجل المراجع، حيث كان يشير كل فرع وHEAD سابقًا، وقاعدة الكائنات نفسها التي يبحث فيها git fsck.

أي أداة تعثر على أي نوع من العمل المفقود
ما فقدتهأين تبحثالأمر
فرع محذوف كنت قد سحبتهسجل مراجع HEADgit reflog
فرع محذوف لم تسحبه قطالإيداعات غير القابلة للوصولgit fsck --unreachable
stash مُسقط أو ممسوحإيداعات دمج غير قابلة للوصولgit fsck --unreachable | grep commit
إيداعات ضاعت بعد reset أو rebaseسجل مراجع الفرعgit reflog show <branch>
تغييرات لم تُودَع ولم تُخبَّأ قطلا مكان لها في Gitلا يمكن استعادتها من Git

استعادة فرع محذوف

يطبع Git آخر إيداع للفرع حين تحذفه (Deleted branch feature/login (was 3f2a9c1)). إن اختفت هذه الرسالة فابحث في سجل مراجع HEAD عن آخر مرة كنت فيها على الفرع، ثم أعد إنشاء الفرع عند ذلك الإيداع.

# find the last commit of the branch
git reflog | grep "feature/login"

# check what it holds
git show 3f2a9c1 --stat

# put the branch back
git branch feature/login 3f2a9c1

استعادة stash مُسقط

لا يبقى للـ stash سجل مراجع بعد إسقاطه، لذا ابحث في الإيداعات غير القابلة للوصول. الـ stash إيداع على شكل دمج تبدأ رسالته بـ WIP on أو On <branch>:، ما يسهّل تصفيته. وهذه هي الطريقة التي يشرحها توثيق stash في Git نفسه.

# list unreachable stash-like commits, newest first
git fsck --unreachable | grep commit | cut -d" " -f3 \
  | xargs git log --merges --no-walk --grep=WIP --format="%h %cr %s"

# inspect a candidate
git stash show -p 7c1e0b4

# restore it into your working tree, or keep it on a branch
git stash apply 7c1e0b4
git branch rescue-stash 7c1e0b4

اعثر على كل إيداع معلّق بـ git fsck --lost-found

يسرد git fsck --lost-found الإيداعات المعلّقة ويكتب نسخة من كلٍّ منها في .git/lost-found/commit/ باسم معرّفه. استخدمه حين لا تعرف ما تبحث عنه: اعرضها بتواريخها ورسائلها ثم أنشئ فرعًا من الذي تريده.

git fsck --lost-found
ls .git/lost-found/commit | xargs git log --no-walk --format="%h %cr %s"
git branch rescue 9d44b0e

استعادة العمل المفقود بالمفقودات في GitTree

  1. افتح المفقودات

    اختر الأدوات ← المفقودات أو اضغط Alt+Shift+D. تُفتح نافذةً كاملة على صفحة البداية التي تشرح المصادر الثلاثة التي تبحث فيها: سجل المراجع ومراجع الاستعادة في GitTree والكائنات غير القابلة للوصول.

  2. ابحث عن العمل المحلي

    فعّل تضمين فحص أعمق للكائنات غير القابلة للوصول للبحث عن المخابئ المُسقطة أيضًا، ثم اضغط البحث عن العمل المحلي. تسرد العمل الذي عُثر عليه كل نتيجة مع مصدرها ووقت رصدها؛ وتضيّق تصفية حسب الالتزام أو الرسالة أو المصدر القائمة.

  3. افحص قبل أن تحتفظ

    اختر نتيجة: يعرض سبب ظهور هذا الكائن أدلّتها، وتظهر رسالتها وملفاتها بجانبها، ويفتح كل ملف محتواه. لا يُسحب شيء ولا يُطبَّق.

  4. احتفظ بها في فرع

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

تُفتح المفقودات في GitTree على صفحة البداية: سجل المراجع ومراجع الاستعادة وفحص أعمق اختياري، قبل البحث عن العمل المحلي.
تُفتح المفقودات في GitTree على صفحة البداية: سجل المراجع ومراجع الاستعادة وفحص أعمق اختياري، قبل البحث عن العمل المحلي.

كم يحتفظ Git بالإيداعات المفقودة

إعدادات الانتهاء الافتراضية في Git
الإعدادالافتراضيما يتحكم فيه
gc.reflogExpire90 يومًاقيود سجل المراجع لإيداعات ما زالت قابلة للوصول
gc.reflogExpireUnreachable30 يومًاقيود سجل المراجع لإيداعات لم تعد قابلة للوصول
gc.pruneExpireأسبوعانالكائنات غير القابلة للوصول بلا قيد في سجل المراجع، مثل stash مُسقط

يعمل جمع المهملات وحده بعد بعض الأوامر، فهذه نوافذ لا وعود. كلما بحثت أبكر وجدت أكثر. والنسخة في مكان آخر، مثل نسخة زميل أو فرع مدفوع، هي شبكة الأمان الأخرى: العمل المفقود الموجود على حاسوبك وحده موجود هناك فقط.

ما لا يمكن استعادته

  • تغييرات لم تُودَع ولم تُخبَّأ قط، مثل تعديلات تخلّصت منها بـ git checkout -- <file> أو git restore.
  • ملفات غير متتبَّعة لم تكن في stash أُنشئ بـ -u.
  • إيداعات أزالها جمع المهملات بالفعل.
  • عمل لم يوجد إلا على حاسوب شخص آخر.

الخطوات التالية: يشرح دليل المفقودات كل صفحة وزر، ويغطي العثور على رؤوس الفروع السابقة عرض سجل المراجع، ويشرح دليل git stash الفرق بين apply وpop والملفات غير المتتبَّعة لتحتاج إلى الاستعادة أقل.

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

هل يمكنني استعادة stash أسقطته؟

غالبًا نعم. يصبح الـ stash المُسقط إيداعًا غير قابل للوصول حتى يزيله جمع المهملات. اعثر عليه بـ git fsck --unreachable وافحصه بـ git stash show -p <sha> ثم git stash apply <sha> أو git branch <name> <sha>.

كيف أستعيد فرعًا محذوفًا في Git؟

اعثر على آخر إيداع للفرع في git reflog (أو رسالة «was <sha>» التي طبعها Git عند الحذف)، ثم شغّل git branch <name> <sha> لإعادة الفرع.

ما الإيداع المعلّق؟

إيداع لا يشير إليه فرع ولا وسم ولا stash ولا قيد في سجل المراجع. يسردها git fsck --lost-found وينسخها إلى .git/lost-found/commit/ لتفحصها.

هل يحذف git gc الإيداعات المفقودة؟

نعم بعد تجاوزها إعدادات الانتهاء: افتراضيًا تُزال الكائنات غير القابلة للوصول بلا قيد في سجل المراجع بعد أسبوعين. تجنّب git gc وgit prune حتى تستعيد عملك.

هل أستطيع استعادة تغييرات لم أودِعها؟

ليس من Git. وحده العمل المودَع أو المخبّأ موجود في قاعدة الكائنات. ابحث في السجل المحلي لمحررك أو في نسخة احتياطية.

هل المفقودات في GitTree مجانية؟

نعم. المفقودات جزء من الخطة المجانية في GitTree. تقرأ مستودعك المحلي فقط، والتغيير الوحيد الذي تُجريه هو فرع الاستعادة الذي تطلبه.

المصادر

تحققنا من المعلومات عن المنتجات الأخرى من صفحاتها الرسمية بتاريخ 5 نوفمبر 2026. الأسعار والميزات تتغير، وصفحات الشركات هي المرجع.