در این مقاله میخوایم باهم یاد بگیریم که چطور Git Stash از دست رفته خودمون رو دوباره بازگردانیم.
شاید براتون اتفاق افتاده باشه که یک موقعی به اشتباه کلیک Git Stash Drop و یا کامند اون رو به اشتباه زده باشید، مثل اتفاقی که چند روز پیش برای من افتاد. من داشتم قسمت Google Recaptcha سایت رو توسعه میدادم که بعد از اون وارد یک جلسه شدم و مجبور شدم که این تغییرات رو Stash کنم چون میخواستم تغییرات دیگری را در اون جلسه اعمال کنم.
بعد جلسه به جای این که apply کنم stash خودم رو اومدم drop زدم و گفتم من دیگه باید بشینم به در نگاه کنم و دوباره باید بشینم اون همه کد رو بزنم، تا بعد چند دقیقه رسید به ذهنم که مگه میشه Git این رو هندل نکرده باشه؟ حتما هندل کرده این موضوع رو، خلاصه سرتون رو درد نیارم که راه حل رو پیدا کردم!
ما هر کاری که در گیت میکنیم یک hash code ایجاد میشه، مثل commit,stash,stage و ... . از اونجایی که ما میخوایم stash گم شده خودمون رو پیدا کنیم کافی هست که بریم کد hash اون رو پیدا کنیم و اون رو تحویل Git بدیم و بعد کار تموم هست.
برای این کار هم ما از دستورات Command Line استفاده میکنیم.
برای کسانی که Linux و Mac OS دارن میتونن از دستور زیر استفاده کنن :
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
برای کسانی که Windows دارن میتونن از دستور زیر استفاده کنن در محیط PowerShell (حواستون باشه کل دستور زیر یک command هست) :
git fsck --no-reflog | select-string 'dangling commit' | foreach { $_.ToString().Split(" ")[2] }
کد طلایی!
بعد از این که دستور بالا را وارد کنید میتونید hash آخرین عملیات خودتون رو پیدا کنید که مربوط به stash شما میشه . با کد طلایی زیر stash خودتون رو برگردونید (به جای stash_hash، هش خودتون رو جایگذاری کنید)
git stash apply $stash_hash
رفرنس مطلب من : recovery - How to recover a dropped stash in Git? | 2022 Code-teacher (thecodeteacher.com)