Stash — ذخیره موقت تغییرات
ذخیره موقت تغییرات نیمهکاره با git stash و برگرداندن آنها بعداً؛ ابزار نجاتدهنده در مواقع ضروری.
مشکل: تغییرات نیمهکاره!
سناریو را تصور کنید: در حال کار روی یک قابلیت جدید هستید که هنوز تمام نشده. ناگهان مدیر میگوید «یک باگ فوری در شاخه اصلی هست، همین الان درستش کن!»
چه کار کنید؟ نمیتوانید کامیت نیمهکاره ثبت کنید (تاریخچه کثیف میشود) و نمیتوانید دورش بیندازید (کارتان هدر میرود). اینجاست که Stash نجاتتان میدهد!
Stash چیست؟
Stash یعنی «کنار گذاشتن موقت». دستور git stash همه تغییرات working directory را ذخیره و پاک میکند — پروژه به وضعیت تمیز آخرین کامیت برمیگردد و شما میتوانید آزادانه کار دیگری انجام دهید. بعداً با یک دستور، تغییرات را برمیگردانید و از همانجا ادامه میدهید.
ذخیره تغییرات در stash
git stash
خروجی:
Saved working directory and index state WIP on main: a1b2c3d آخرین کامیت
حالا اگر git status بگیرید، میبینید پروژه تمیز است!
ذخیره با پیام توضیحی
git stash save "کار نیمهکاره روی قابلیت جستجو"
git stash بهصورت پیشفرض فقط فایلهای tracked و stage شده را ذخیره میکند. برای شامل شدن فایلهای جدید (untracked) از git stash -u استفاده کنید.دیدن لیست stash ها
git stash list
خروجی:
stash@{0}: WIP on main: کار نیمهکاره روی قابلیت جستجو
stash@{1}: WIP on main: تغییرات فرم تماس
آخرین stash همیشه stash@{0} است.
برگرداندن تغییرات
| دستور | رفتار |
|---|---|
git stash pop | آخرین stash را برمیگرداند و از لیست حذف میکند |
git stash apply | آخرین stash را برمیگرداند اما در لیست میماند |
git stash apply stash@{1} | stash شماره ۱ را برمیگرداند |
apply استفاده کنید — stash در لیست میماند و اگر چیزی خراب شد، دوباره میتوانید آن را برگردانید.حذف stash
# حذف یک stash خاص:
git stash drop stash@{0}
# حذف همه stash ها:
git stash clear
دیدن محتوای stash
# خلاصه تغییرات:
git stash show
# تغییرات کامل:
git stash show -p
سناریوی کامل واقعی
# ۱. در حال کار روی قابلیت جدید هستیم...
# ۲. باگ فوری میرسد!
git stash save "قابلیت جستجو - نیمهکاره"
# ۳. پروژه تمیز است؛ باگ را رفع میکنیم:
git checkout main
# ... رفع باگ ...
git add . && git commit -m "رفع باگ فوری"
# ۴. برمیگردیم سر کار قبلی:
git checkout feature-search
git stash pop
# ۵. همه تغییرات نیمهکاره برگشت! ادامه میدهیم 🎉
خلاصه
git stashتغییرات را موقتاً کنار میگذاردgit stash listلیست stash ها را نشان میدهدgit stash popبرمیگرداند و حذف میکند؛applyفقط برمیگرداند- برای فایلهای untracked از
-uاستفاده کنید
این مبحث بخشی از دوره آموزش کامل Git است.