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 است.

ابزارهای مرتبط