شروحات Git
شرح Git stash: احفظ تغييراتك وانتقل بين الفروع ثم استعد عملك
عندما تقاطعك مهمة عاجلة، احفظ عملك غير المكتمل باستخدام Git stash ثم استعده لاحقًا. دليل عملي يشرح apply وpop والتعارضات مع خطوات مرئية في GitTree.
يحفظ 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
| الأمر | يستعيد الملفات | يحتفظ بالعنصر |
|---|---|---|
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
راجع العمل الجاري
افتح صف
// WIPوراجع الملفات ثم اختر تبويب Stash بجوار Commit.حدد نطاق الحفظ
اختر All changes أو Only staged changes أو Only the selected files، وفعّل Include untracked files عند الحاجة إلى حفظ ملفات جديدة.
اكتب اسم المهمة
أدخل رسالة مثل WIP: checkout form ثم اختر Stash. راجع الملفات المتبقية قبل تبديل الفرع؛ الحفظ الجزئي لا يُخلي كل التغييرات.
عاين قبل الاستعادة
انقر بزر الفأرة الأيمن على العنصر المناسب في قسم Stashes واختر Show Stash لمراجعة ملفاته وفروقه، وتأكد من الفرع المستقبِل.
استعد العمل وراجعه
اختر Apply Stash للاحتفاظ بالعنصر أو Pop Stash لحذفه بعد النجاح، ثم راجع التغييرات واختبرها وسجّلها عندما تكون جاهزة.

لتجربة هذه الخطوات على مستودعك، نزّل 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. الأسعار والميزات تتغير، وصفحات الشركات هي المرجع.