برنامه نویسی

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 نشان دهنده یک تغییر واحد است.

شات صفحه بعدی استفاده را نشان می دهد git stash بدون هیچ استدلالی خواهید دید که نظر پیش فرض بخشی از شناسه commit و پیام commit خواهد بود.

دستور git stash

این خروجی است git stash list نمایش یک stash با شناسه ذخیره آن و نظر پیش‌فرض.

خروجی git stash list که یک stash را نشان می دهد.

اگر فقط پیام commit قبلی وجود داشته باشد، تغییرات واقعی ایجاد شده و ذخیره شده را منعکس نمی کند. بهتر است پیامی داشته باشید که منعکس کننده تغییرات ایجاد شده و دلیل پنهان کردن آنها باشد. در اینجا می‌توانیم نمونه‌ای از پنهان کردن تغییر با یک پیام را ببینیم.

وضعیت Git یک تغییر را نشان می دهد و تغییر را با یک پیام مخفی می کند.

اکنون می‌توانیم ببینیم که یک commit دوم وجود دارد و به بالای لیست منتقل شده است. توجه داشته باشید که تعهد اولیه ما که در ابتدا stash@{0} بود اکنون stash@{1} است. تغییری که اخیراً ذخیره کردیم، جای خود را در موقعیت 0 گرفته است.

فهرست ذخیره‌سازی که دو ذخیره را نشان می‌دهد.

اگر قرار بود بدوید git stash pop شما تغییراتی را که ما انجام دادیم دریافت خواهید کرد. با این حال، اگر بخواهید روی مجموعه ای از تغییرات که در بالای لیست نیستند کار کنید، چه؟ به همین سادگی تماس گرفتن git stash pop <id>. در این مورد من 1 را به عنوان شناسه ارائه کرده ام. می‌توانید در پایین خروجی git ببینید که می‌گوید ref را به stash@{1} انداخته است.

Git stash pop با یک stash id

در حال دویدن git stash list می بینیم که تنها یک تغییر در لیست باقی مانده است. تغییر اولیه ای که پنهان کرده بودیم از زمانی که اولین تغییر را ایجاد کردیم از لیست حذف شد.

فهرست ذخیره Git که فقط دومین تغییر ما را نشان می دهد

در اینجا از گزینه push به همراه یک پیام استفاده می کنیم. فهرست نشان می دهد که هر دو تغییر دوباره ذخیره شده اند.

اجرای git stash با گزینه push و یک پیام

فهرست پنهان‌ها نشان می‌دهد که هر دو ذخیره‌سازی هنوز ذخیره می‌شوند.

اکنون از گزینه application استفاده می کنیم تا نشان دهیم که می توانیم یک stash را بدون حذف آن از لیست stashes اعمال کنیم.

استفاده از git stash برای اعمال یک commit خاص بدون حذف آن اعمال می شود.

فهرست پنهان‌ها نشان می‌دهد که هر دو ذخیره‌سازی هنوز ذخیره می‌شوند.

برای جمع‌بندی موارد، اجازه دهید نشان دهیم وقتی می‌خواهیم مخفیگاه خاصی را حذف کنیم چه اتفاقی می‌افتد.

استفاده از git stash drop برای حذف ذخیره

فهرست ذخیره سازی Git که تنها یک ذخیره باقی مانده را نشان می دهد

نتیجه

git stash یک راه مفید برای ذخیره مجموعه ای از تغییراتی است که روی آنها کار می کنید. البته راه‌های دیگری نیز برای مدیریت ذخیره‌سازی تغییرات (یعنی انشعاب) وجود دارد. مورد استفاده معمول من برای git stash زمانی است که باید مجموعه ای از تغییرات را از یک شاخه دیگر ادغام کنم و آماده انجام کاری که در حال حاضر روی آن کار می کنم نیستم.

اگر این پست مفید بود و/یا اگر سوالی در مورد این موضوع دارید به من اطلاع دهید. برای مطالعه بیشتر در مورد git، پست من در مورد استراتژی های ادغام git را بررسی کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا