Git School · FluxGit

نقاط الاستعادة وstash اليدوي في Git

FluxGit ·

تمثل المقاطع حالات مختلفة وليست سكربتاً واحداً. اختر الحالة المناسبة لمستودعك واستبدل أسماء الفروع والمسارات وVERIFIED_COMMIT قبل الاستخدام. أوامر الإلغاء تخص العملية النشطة المقابلة فقط؛ لا تنفذ البديلين معاً.

الجواب المختصر

تسجل نقاط استعادة FluxGit حالات لاسترجاع عمليات السجل المشمولة. أما stash اليدوي فيحفظ تعديلات محلية لاستخدام لاحق، وهو مسار منفصل.

المثال وشروطه

يعرض درس G12 تبديل الفرع مع تعديلات معلقة على ملفات tracked. تبقى ملفات untracked في المجلد ما لم تُضمّنها صراحة.

افحص الحالة قبل التعديل

افحص git status --short وgit diff. حدد ما تريد حفظه قبل التبديل؛ المجلد النظيف لا يعني نسخة احتياطية دائمة.

git status --short
git diff

احتفظ بمرجع أو نسخة عمل منفصلة

أنشئ stash يدويًا برسالة واضحة. يحفظ git stash push تعديلات tracked؛ استخدم -u فقط لتضمين ملفات untracked أيضًا.

git stash push -m "school/manual-before-switch"
git stash list

المسار الأول

افحص git stash list وبدّل إلى الفرع المطلوب. عند العودة، راجع السياق قبل تطبيق العنصر المختار.

git switch target-branch

اختر النتيجة الأخرى عن قصد

يبقي git stash apply العنصر. يحذفه git stash pop فقط بعد تطبيق ناجح؛ عند حدوث تعارض يبقى العنصر محفوظًا.

git stash show --patch 'stash@{0}'
git stash apply 'stash@{0}'

الحدود والاستثناءات

تشمل النقاط التلقائية reset وrebase وcherry-pick وrevert وmerge عبر المسارات المحمية. لا ينشئ discard أوclean نقطة Flux restore point شاملة.

التعارضات والتنظيف

عند التعارض، افحص الملفات وحل المشكلة باختيار واعٍ. لا تكرر pop أو تحذف العنصر لإخفاء حالة معلقة.

تحقق من النتيجة

تحقق من الملفات والفهرس والاختبارات بعد تطبيق stash. احذف العنصر فقط بعد التأكد من حفظ العمل المطلوب.

git status --short
git diff
git diff --cached

أسئلة شائعة

لا يُنشر stash تلقائيًا مع push ولا يحل محل النسخ الاحتياطي. تعتمد الاستعادة على بقاء الحالة المحلية ذات الصلة.

راجع العملية في FluxGit

يجمع Safety Timeline تحركات reflog والمخاطر ونقاط الاستعادة. تظل بيانات النقاط محلية؛ استخدم المعاينة وسياق الاستعادة الخاص بكل عملية.

مراجع Git الرسمية

Git School · 1:51

تبديل فرع Git مع عمل غير مكتمل: شرح مرئي لـ git stash

احفظ تعديلًا متتبعًا باستخدام git stash، وسمّه، ثم بدّل الفرع وعد لاستخدام pop. تعرّف على سبب بقاء الملفات غير المتتبعة والفرق بين apply وpop الناجح. يتضمن أوامر الطرفية.

تبديل فرع Git مع عمل غير مكتمل: شرح مرئي لـ git stash
التعليق الصوتي بالإنجليزية. تتوفر على YouTube ترجمة نصية يدوية بـ11 لغة. هذا النص بالعربية.

شاهد على YouTube — يفتح علامة تبويب جديدة

مسجّل في مستودع اختباري. التعليق الصوتي بالإنجليزية والترجمة بالعربية.

اقرأ نص التعليق الصوتي
  1. 00:03 أنت في منتصف تعديل وتحتاج إلى مراجعة فرع آخر الآن. العمل غير جاهز لإنشاء commit، ولا تريد فقدانه.
  2. 00:12 هذا هو التعديل غير المكتمل في app.py.
  3. 00:19 يحفظ stash التغييرات التي يتتبعها Git. هنا يحفظ تعديل app.py ويزيل هذا التعديل من مجلد العمل. تبقى الملفات غير المتتبعة على القرص. يعيد pop الناجح التعديل ويزيل إدخاله من stash.
  4. 00:36 اختر Stash current changes وأعطه اسمًا ستتعرف عليه لاحقًا.
  5. 00:48 انتقل إلى الفرع الآخر. التعديل المتتبع محفوظ في stash. يبقى الملف غير المتتبع في المجلد.
  6. 00:58 انتهيت هناك. عد إلى main.
  7. 01:05 نفّذ pop على stash. عاد التعديل إلى app.py واختفى stash.
  8. 01:15 apply أم pop؟ يعيد apply التغييرات ويحتفظ بإدخال stash. لا يزيل pop الإدخال إلا إذا طُبقت التغييرات بنجاح. إذا حدثت تعارضات، يُحتفظ بـstash.
  9. 01:29 في الطرفية: git stash push مع رسالة، ثم بدّل الفرع وعد، وبعدها git stash pop.
  10. 01:37 ملخص: العمل غير المكتمل يوضع على رف، لا في commit غير مكتمل. الدرس التالي: ترتيب commits قبل طلب الدمج.

مسارات ذات صلة

تنزيل FluxGit