تخطَّ إلى المحتوى
GitTree

شروحات Git

شرح Git stash: احفظ تغييراتك وانتقل بين الفروع ثم استعد عملك

عندما تقاطعك مهمة عاجلة، احفظ عملك غير المكتمل باستخدام Git stash ثم استعده لاحقًا. دليل عملي يشرح apply وpop والتعارضات مع خطوات مرئية في GitTree.

بقلم Kodmoraآخر تحديث قراءة في 5 دقائق

يحفظ Git stash التغييرات غير المسجّلة لتتمكن من العمل على مهمة أخرى ثم استعادتها. ابدأ بالأمر git stash push -m "WIP: checkout form"، ثم استخدم git stash apply للاحتفاظ بالنسخة المحفوظة بعد استعادتها، أو git stash pop لحذفها بعد نجاح الاستعادة. أضف -u إذا كان العمل يتضمن ملفات جديدة غير متتبعة.

سنستخدم مثالًا واضحًا: توقّف مؤقتًا عن تطوير نموذج إتمام الشراء، وأصلح مشكلة في فرع آخر، ثم عُد إلى النموذج. نعرض أيضًا الخطوات في GitTree، برنامج Git الذي نطوّره لأنظمة macOS وWindows وLinux. إدارة stash ضمن الخطة المجانية، وتتطلب الإصدارات الرسمية الحالية تسجيل الدخول.

متى تستخدم stash أو commit أو worktree؟

اختر طريقة مناسبة لإيقاف العمل مؤقتًا
الموقفالاختيارالسبب
مقاطعة قصيرة أثناء تعديل ملفاتStashإخلاء الملفات مؤقتًا دون إضافة commit عادي إلى الفرع
عمل تريد مشاركته أو حفظه على خادم بعيدCommit ثم push إلى فرع مناسبتبقى stashes محلية ولا يرفعها push العادي
مهمتان تريد فتحهما في الوقت نفسهWorktreeمجلد عمل مستقل لكل مهمة

للمهام المتوازية الطويلة راجع دليل worktrees. يناسب stash الحفظ المؤقت، لكنه ليس نسخة احتياطية كافية وحده للعمل المهم. سمِّ كل عنصر باسم المهمة؛ يشير stash@{0} إلى أحدث عنصر ويتغير الترقيم مع تغيّر القائمة.

مثال كامل لحفظ التغييرات والانتقال إلى فرع آخر

افحص git status أولًا. يحفظ stash الافتراضي تعديلات الملفات المتتبعة، ومنها ما أضفته إلى staging، ولا يشمل الملفات الجديدة أو المتجاهَلة. لأن النموذج يتضمن ملفًا جديدًا سنستخدم -u. يفترض المثال وجود الفرعين feature/checkout وhotfix/payment؛ استبدلهما بأسماء فروعك.

git status
git stash push -u -m "WIP: checkout form"
git stash list
git status
git switch hotfix/payment

أنهِ الإصلاح واختبره وسجّله قبل العودة. راجع قائمة stash والفروق قبل الاستعادة؛ فقد تنشئ مهمة أخرى عنصرًا أحدث أثناء غيابك. وضع المحدِّد مثل "stash@{0}" بين علامتي اقتباس يمنع الصدفة من تفسير رموزه بشكل خاص.

git switch feature/checkout
git stash list
git stash show -p --include-untracked "stash@{0}"
git stash apply "stash@{0}"
git status

الفرق بين git stash apply وpop

استعادة stash
الأمريستعيد الملفاتيحتفظ بالعنصر
git stash apply "stash@{0}"نعمنعم
git stash pop "stash@{0}"نعميُحذف بعد النجاح ويبقى عند التعارض
git stash apply --index "stash@{0}"نعم، ويحاول استعادة حالة staging أيضًانعم

للعمل المهم، استخدم apply أولًا ثم راجع التغييرات واختبرها، واحذف العنصر بعد تسجيل العمل المستعاد. قد تؤدي الاستعادة مرتين إلى تعارضات أو تكرار تغييرات، لذا افحص الملفات قبل المحاولة مجددًا. لا يرفع apply أو pop أي شيء إلى خادم.

حفظ الملفات الجديدة أو المحددة أو الموجودة في staging

git stash push -u -m "WIP: include new files"
git stash push -m "WIP: checkout only" -- src/checkout.ts
git stash push --staged -m "WIP: staged changes only"
git stash push --keep-index -m "WIP: keep staged work ready"

هذه بدائل مستقلة وليست سلسلة تنفّذها معًا. يحدد المسار بعد -- الملفات المطلوبة. يحفظ --staged التغييرات الموجودة في staging فقط، بينما يترك --keep-index التغييرات المُجهّزة في مكانها لتختبرها أو تسجّلها مع إبعاد التعديلات الأخرى. قد لا تدعم إصدارات Git القديمة الخيار --staged؛ افحص git --version ومساعدة إصدارك.

حفظ التغييرات واستعادتها في GitTree

  1. راجع العمل الجاري

    افتح صف // WIP وراجع الملفات ثم اختر تبويب Stash بجوار Commit.

  2. حدد نطاق الحفظ

    اختر All changes أو Only staged changes أو Only the selected files، وفعّل Include untracked files عند الحاجة إلى حفظ ملفات جديدة.

  3. اكتب اسم المهمة

    أدخل رسالة مثل WIP: checkout form ثم اختر Stash. راجع الملفات المتبقية قبل تبديل الفرع؛ الحفظ الجزئي لا يُخلي كل التغييرات.

  4. عاين قبل الاستعادة

    انقر بزر الفأرة الأيمن على العنصر المناسب في قسم Stashes واختر Show Stash لمراجعة ملفاته وفروقه، وتأكد من الفرع المستقبِل.

  5. استعد العمل وراجعه

    اختر Apply Stash للاحتفاظ بالعنصر أو Pop Stash لحذفه بعد النجاح، ثم راجع التغييرات واختبرها وسجّلها عندما تكون جاهزة.

شاهد خطوات تبويب Stash: راجع التغييرات واكتب اسمًا ثم احفظها.
شاهد خطوات تبويب Stash: راجع التغييرات واكتب اسمًا ثم احفظها.واجهة GitTree مع مستودع للعرض.

لتجربة هذه الخطوات على مستودعك، نزّل GitTree وسجّل الدخول وافتح مجلد المستودع. تظل stashes الموجودة عناصر Git عادية يمكنك رؤيتها من الطرفية أيضًا.

حل تعارضات git stash pop

قد يظهر تعارض إذا غيّر الفرع المستقبِل الأسطر نفسها. يحتفظ pop بالعنصر عند التعارض، لكن بعض التغييرات قد تكون طُبّقت بالفعل. لا تكرر pop؛ نفّذ git status وحل الملفات المتعارضة وأضف الحلول المطلوبة فقط إلى staging. يشرح دليل تعارضات الدمج العلامات والمحرر الثلاثي.

git status
git diff --name-only --diff-filter=U
# Edit and test each conflicted file, then stage its resolution:
git add -- src/checkout.ts
git diff --cached
git status

لا يوجد git stash --continue أو git stash --abort. بعد حل الملفات راجعها وسجّلها بالطريقة المعتادة. إذا أردت إلغاء المحاولة، احفظ العمل السابق للاستعادة وراجع كل مسار قبل تجاهل تغييرات؛ فقد يمحو hard reset تعديلات غير مرتبطة. إذا ابتعد الفرع كثيرًا، يستعيد git stash branch rescue/checkout "stash@{0}" العمل على فرع جديد عند نقطة البداية الأصلية ويحذف العنصر بعد النجاح.

احذف stash بعد التأكد من النتيجة

نفّذ git stash list مجددًا قبل git stash drop "stash@{0}" لأن ترتيب العناصر قد يتغير. يحذف git stash clear القائمة كلها. استعادة عنصر محذوف باستخدام Git وحده غير مضمونة وتعتمد على بقاء كائناته. يحتفظ Delete Stash في GitTree بالعنصر في لقطات الاستعادة ليعيده Undo؛ هذه خاصية في التطبيق ولا تضمن استعادة حذف نُفّذ من الطرفية. راجع أيضًا التراجع عن أخطاء Git.

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

هل يحفظ git stash الملفات الجديدة؟

ليس افتراضيًا. استخدم git stash push -u أو Include untracked files في GitTree. لا يشمل ذلك الملفات المتجاهَلة.

هل يمكن استعادة stash على فرع آخر؟

نعم. انتقل إلى الفرع المطلوب ثم استعد العنصر. راجع فروقه أولًا لأنه قد يعتمد على كود غير موجود على ذلك الفرع.

هل يحذف pop العنصر عند التعارض؟

لا. يحتفظ Git بالعنصر إذا ظهرت تعارضات. حل الملفات وتحقق منها قبل حذف العنصر يدويًا.

هل يُرفع stash إلى GitHub؟

لا يرفع git push العادي عناصر stash. سجّل العمل على فرع مناسب وارفعه إذا احتجت نسخة بعيدة.

هل إدارة stash مجانية في GitTree؟

نعم، تشملها الخطة المجانية. تتطلب الإصدارات الرسمية الحالية تسجيل الدخول، ولا تحتاج إلى GitTree Pro لهذا الاستخدام المحلي.

المصادر

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