Git Stash – یک پرایمر سریع
این در ابتدا در وبلاگ من ارسال شده بود و برای دسترسی مجدد در اینجا ارسال می شود. لطفاً آن را به اشتراک بگذارید و اگر دوست داشتید یا سؤالی دارید به من بگویید!
وقفه ها هنگام کار بر روی یک پروژه بزرگ نسبتاً رایج هستند. آنها حتی زمانی که خودم کار می کنم برای من رایج هستند. برای من این وقفه ها اغلب به شکل زیر است: لطفاً به کار روی این چیز دیگر بروید. چه اتفاقی میافتد وقتی این به نقطهای برسد که من آماده انجام آن نباشم؟ git stash برای نجات! همانطور که نام نشان می دهد git stash اجازه می دهد تا تغییرات برای استفاده بعدی پنهان شوند. پس از ذخیره تغییرات، درخت منبع به وضعیت آخرین commit برمیگردد. در این مرحله می توانم روی مجموعه دیگر تغییرات ضروری کار کنم. وقتی آماده بازگشت به تغییراتی هستم که ذخیره کردهام، میتوانم به سادگی آنها را با استفاده از git stash pop از انبار خارج کنم و به کارم ادامه دهم.
TL;DR – دستوراتی که برای git stash باید بدانم چیست؟
-
git stash
– این تغییرات فعلی شما را ذخیره می کند و دایرکتوری کاری شما را پاک می کند. این همان git stash push است -
git stash -m <message>
– مانند بالا اما پیام را به جای commit ID به stash ضمیمه کنید -
git stash list
– لیست مخفیگاه ها را برای این مخزن نمایش دهید -
git stash apply <stash id>
– تغییرات را از stash اعمال کنید و stash را در لیست stashes بگذارید. -
git stash pop <stash id>
– مانند اعمال، اما ذخیره را از لیست حذف کنید -
git stash drop <stash id>
– ذخیره را از لیست حذف کنید
در حالی که گزینه های بیشتری برای آن وجود دارد git stash
این لیست شامل اکثر موارد مورد نیاز برای استفاده عادی است. مستندات فهرست کامل گزینههای git stash را نشان میدهد.
بیایید چند نمونه را ببینیم
من یک مخزن ساده با یک فایل ایجاد کرده ام تا چند نمونه از نحوه استفاده از git stash را نشان دهم. در اینجا من یک تغییر در فایل دارم که آماده استیج یا ذخیره شدن است.
شات صفحه بعدی استفاده را نشان می دهد git stash
بدون هیچ استدلالی خواهید دید که نظر پیش فرض بخشی از شناسه commit و پیام commit خواهد بود.
این خروجی است git stash list
نمایش یک stash با شناسه ذخیره آن و نظر پیشفرض.
اگر فقط پیام commit قبلی وجود داشته باشد، تغییرات واقعی ایجاد شده و ذخیره شده را منعکس نمی کند. بهتر است پیامی داشته باشید که منعکس کننده تغییرات ایجاد شده و دلیل پنهان کردن آنها باشد. در اینجا میتوانیم نمونهای از پنهان کردن تغییر با یک پیام را ببینیم.
اکنون میتوانیم ببینیم که یک commit دوم وجود دارد و به بالای لیست منتقل شده است. توجه داشته باشید که تعهد اولیه ما که در ابتدا stash@{0} بود اکنون stash@{1} است. تغییری که اخیراً ذخیره کردیم، جای خود را در موقعیت 0 گرفته است.
اگر قرار بود بدوید git stash pop
شما تغییراتی را که ما انجام دادیم دریافت خواهید کرد. با این حال، اگر بخواهید روی مجموعه ای از تغییرات که در بالای لیست نیستند کار کنید، چه؟ به همین سادگی تماس گرفتن git stash pop <id>
. در این مورد من 1 را به عنوان شناسه ارائه کرده ام. میتوانید در پایین خروجی git ببینید که میگوید ref را به stash@{1} انداخته است.
در حال دویدن git stash list
می بینیم که تنها یک تغییر در لیست باقی مانده است. تغییر اولیه ای که پنهان کرده بودیم از زمانی که اولین تغییر را ایجاد کردیم از لیست حذف شد.
در اینجا از گزینه push به همراه یک پیام استفاده می کنیم. فهرست نشان می دهد که هر دو تغییر دوباره ذخیره شده اند.
اکنون از گزینه application استفاده می کنیم تا نشان دهیم که می توانیم یک stash را بدون حذف آن از لیست stashes اعمال کنیم.
برای جمعبندی موارد، اجازه دهید نشان دهیم وقتی میخواهیم مخفیگاه خاصی را حذف کنیم چه اتفاقی میافتد.
نتیجه
git stash
یک راه مفید برای ذخیره مجموعه ای از تغییراتی است که روی آنها کار می کنید. البته راههای دیگری نیز برای مدیریت ذخیرهسازی تغییرات (یعنی انشعاب) وجود دارد. مورد استفاده معمول من برای git stash زمانی است که باید مجموعه ای از تغییرات را از یک شاخه دیگر ادغام کنم و آماده انجام کاری که در حال حاضر روی آن کار می کنم نیستم.
اگر این پست مفید بود و/یا اگر سوالی در مورد این موضوع دارید به من اطلاع دهید. برای مطالعه بیشتر در مورد git، پست من در مورد استراتژی های ادغام git را بررسی کنید.