الـ stash: شيل الشغل على جنب
إنت في نص feature والملفات مليانة تعديلات، وفجأة لازم تصلّح bug على main حالًا. مينفعش تعمل commit لشغل لسه نص نص، ومش عايز ترميه.
الـ stash بيشيل التعديلات اللي متعملهاش commit في درج على جنب، ويرجّع الملفات نضيفة. ولما تخلص، بترجعها تاني.
git stash push -m "cart: نص شغل الـ quantity" # شيل التعديلاتgit switch main # روح صلّح الـ bug# ... صلّح واعمل commit ...git switch feature/cartgit stash pop # رجّع التعديلات
git stash list # كل الحاجات اللي في الدرجgit stash show -p # شوف أول واحدة فيها إيهgit stash apply # رجّعها بس سيبها في الدرجgit stash drop # امسح أول واحدةgit stash push -u # شيل كمان الملفات الجديدة اللي Git مش متابعها
الـ cherry-pick: هات commit واحد بس
عملت fix مهم على feature/cart، ومحتاجه على main دلوقتي، من غير ما تدمج الـ feature كلها لأنها لسه مخلصتش.
git switch maingit cherry-pick 4d5e6f
Git بياخد التعديلات اللي في 4d5e6f ويعمل بيها commit جديد على main. نفس التعديل، بس hash مختلف، لأن الـ parent مختلف.
لو حصل conflict، نفس الخطوات: حل، و git add، و git cherry-pick --continue. أو --abort.
خلّصت الفصل لما
🧠 اختبر نفسك
١) إيه الفرق بين stash pop و stash apply؟
الاتنين بيرجّعوا التعديلات. pop بيمسحها من الدرج، apply بيسيبها.
٢) عملت stash والملف الجديد اللي عملته لسه موجود. ليه؟
لأن الـ stash العادي مش بيشيل الملفات اللي Git مش متابعها. استخدم -u.
٣) الـ commit اللي جه بـ cherry-pick نفس الـ hash؟
لا. نفس التعديل، بس commit جديد بـ parent مختلف، فالـ hash مختلف.