طريقة استعادة 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.
| ما فقدته | أين تبحث | الأمر |
|---|---|---|
| فرع محذوف كنت قد سحبته | سجل مراجع HEAD | git 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
افتح المفقودات
اختر الأدوات ← المفقودات أو اضغط
Alt+Shift+D. تُفتح نافذةً كاملة على صفحة البداية التي تشرح المصادر الثلاثة التي تبحث فيها: سجل المراجع ومراجع الاستعادة في GitTree والكائنات غير القابلة للوصول.ابحث عن العمل المحلي
فعّل تضمين فحص أعمق للكائنات غير القابلة للوصول للبحث عن المخابئ المُسقطة أيضًا، ثم اضغط البحث عن العمل المحلي. تسرد العمل الذي عُثر عليه كل نتيجة مع مصدرها ووقت رصدها؛ وتضيّق تصفية حسب الالتزام أو الرسالة أو المصدر القائمة.
افحص قبل أن تحتفظ
اختر نتيجة: يعرض سبب ظهور هذا الكائن أدلّتها، وتظهر رسالتها وملفاتها بجانبها، ويفتح كل ملف محتواه. لا يُسحب شيء ولا يُطبَّق.
احتفظ بها في فرع
تحت احتفظ بهذا الإيداع اكتب اسم الفرع الجديد واضغط إنشاء فرع استعادة. تسرد المُستعاد الفرع، وينقلك اعرض في المخطط إليه. لا تتغير نسخة العمل ولا الملفات.

كم يحتفظ Git بالإيداعات المفقودة
| الإعداد | الافتراضي | ما يتحكم فيه |
|---|---|---|
gc.reflogExpire | 90 يومًا | قيود سجل المراجع لإيداعات ما زالت قابلة للوصول |
gc.reflogExpireUnreachable | 30 يومًا | قيود سجل المراجع لإيداعات لم تعد قابلة للوصول |
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. الأسعار والميزات تتغير، وصفحات الشركات هي المرجع.