Stashing یک تکنیک git کمتر شناخته شده و در عین حال قدرتمند برای ایمن نگه داشتن کد است حتی زمانی که شما آماده اجرای آن نیستید.
ذخیره سازی به شما امکان می دهد یک کپی از تغییراتی که در یک مخزن ایجاد کرده اید، بدون نیاز به ایجاد commit نگه دارید.
اگر در حال تغییر زمینه هستید، مفید است، به خصوص اگر بین اشکالات یا وظایف مختلف در یک پروژه به عقب و جلو می روید.
عملیات پایه git stash
شما می توانید از git stash برای تسهیل گردش کار خود هنگام برخورد با خطوط موازی کار استفاده کنید. تصور کنید در حال کار روی یک کار طولانی مدت، با تغییراتی در نسخه کاری محلی خود هستید. سپس، یک مورد فوری پیش می آید که باید فوراً روی آن کار کنید.
گردش کار استاندارد برای ذخیره سازی تغییرات به شرح زیر است:
- تغییرات محلی ایجاد کنید
- تغییرات محلی را ذخیره کنید
- <کارهای دیگر>
- تغییرات پنهان شده را دوباره اعمال کنید
وقتی تغییرات را با استفاده از دستور git stash [push] ذخیره میکنید، git به HEAD بازنشانی میشود. سپس می توانید به کار بر روی هر چیزی که نیاز دارید ادامه دهید و به مخزن متعهد شوید که گویی هرگز تغییرات اصلی را انجام نداده اید.
پس از اتمام کار با هر موردی که در وهله اول شما را کنار گذاشت، از git stash pop برای اعمال تغییرات و حذف آنها از ذخیره استفاده کنید. همچنین می توانید تغییرات خود را اعمال کرده و با git stash application آنها را در مخفی نگه دارید. این ممکن است مفید باشد اگر بخواهید به سرعت تغییرات را در چندین شاخه اعمال کنید.
کار با بیش از یک ذخیره
اگر واقعاً سرتان شلوغ است، ممکن است متوجه شوید که روی چندین کار همزمان کار میکنید و ممکن است لازم باشد همه آنها را پنهان کنید. نگران نباشید، git stash برای این کار ساخته شده است.
هر بار که از git stash push استفاده می کنید، مجموعه دیگری از تغییرات را ذخیره می کنید. از فهرست git stash برای نشان دادن همه چیزهایی که پنهان کرده اید استفاده کنید. چیزی شبیه به این را خواهید دید:
stash@{0}: WIP on main: 2fba62e first commit
stash@{1}: WIP on main: 2fba62e first commit
این پیامها خیلی مفید نیستند، اما میتوانید با افزودن یک پیام سفارشی هنگام ذخیره کردن، سرنخهایی برای خود بگذارید:
git stash push -m "third"
وقتی اکنون فهرست میکنید، پیام سفارشی خود را میبینید:
stash@{0}: On main: third
stash@{1}: WIP on main: 2fba62e first commit
نمایش تفاوت بین تفاوت ها
برای اینکه بدانید چه چیزی در یک انبار تغییر کرده است، از git stash show استفاده کنید. بدون استدلال بیشتر، خلاصه ای از تفاوت را برای آخرین ذخیره نشان می دهد، به شکل زیر:
$ git stash show
README.md | 3 +++
1 file changed, 3 insertions(+)
همچنین میتوانید برای پرسوجو از یک ورودی خاص، یک شناسه مخفی ارسال کنید:
git stash show stash@{0}
ایجاد یک شاخه از انبار
ممکن است تصمیم بگیرید که تغییرات در یک انبار به قدری قابل توجه است که شایسته است در شعبه ای از خود باشند. اگر چنین است، با استفاده از دستور branch یک شاخه جدید از مخزن ایجاد کنید:
git stash branch
باز هم، این به صورت پیشفرض روی جدیدترین ذخیرهسازی کار میکند، اما در صورت لزوم میتوانید یک شناسه مخفی ارائه کنید. Git شعبه جدید شما را از همان نقطه ای در مخزن به عنوان مخزن ایجاد می کند. سپس تغییرات را از ذخیره به کپی کاری شما اعمال می کند.
تمیز کردن Stash Up
دستور git unstash وجود ندارد. اگر می خواهید یک ورودی ذخیره را حذف کنید، از drop استفاده کنید:
git stash <strong>drop</strong>
باز هم، این به طور پیشفرض به آخرین نسخه پیشفرض میشود، اما میتوانید به جای آن یک شناسه مخفی ارائه کنید. اگر تصمیم دارید که می خواهید از شر هر چیزی که مخفی کرده اید خلاص شوید، از این دستور استفاده کنید:
git stash clear
از git stash برای Commits های سبک وزن موقت استفاده کنید
ذخیره سازی Git به اندازه مخازن کامل قدرتمند نیست. اما آنها همچنان عملکردهای مفید زیادی را به تنهایی ارائه می دهند. اگر اغلب میبینید که در وسط کار نیاز به تعویض شاخهها دارید، از انبارها استفاده کنید.
Stashing تنها یک بخش کوچک از git است، که برنامه ای با حجم زیادی برای ارائه است.