تعریف و کاربرد git stash
ما از git stash برای ذخیره سازی تغییرات در زمان هایی که هنوز آماده commit نیستند و در همان لحظه نیاز داریم روی branch دیگیری تغییر ایجاد کنیم استفاده می کنیم.
برای مثال شما در حال کار روی یک feature هستید و تغییراتی دارید که هنوز آماده commit نیستند و در همین لحظه یک باگ فوری برای شما میاد که باید اون را برطرف و commit کنید.
در این حالت شما نیاز به این دارید که تغییرات فعلی رو در جایی ذخیره کنید و به branch جدید switch کنید. این جاست که git stash به کمک شما میاد.
Stash کردن تغییرات
git stash save
# or
git stash
# or with a message
git stash save "this is a message to display on the list"
اعمال stash به منظور کار کردن روی آن
git stash apply
# or apply a specific one from out stack
git stash apply stash@{3}
مشاهده لیست stash ها
هر بار که یک stash را ذخیره می کنیم، به صورت stack ذخیره می شود با استفاده از دستور list میتونیم همه stash ها رو ببینیم.
git stash list
# or for more information (log methods)
git stash list --stat
برای پاک کردن stack می تونیم دستی اونها رو پاک کنیم.
# drop top stash
git stash drop
# or
git stash drop <name>
# to clear all history we can use
git stash clear
اعمال و حذف روی یک command
git stash pop
* اگر ما با conflict هایی مواجه شویم، تغییرات خود را reset یا commit میکنیم
* conflict ها از طریق pop موجب حذف stash های بعدی نمی شوند
مثال از مراحل Git Stash
۱- یک فایل رو ویرایش کنید
۲- فایل رو stage کنید
۳- stach فراخوانی کنید
۴- لیست stash رو ملاحظه کنید
۵- با git status مطمئن بشید که هیچ تغییری بلاتکلیف ندارید
۶- git pop کنید
۷- لیست stash رو ببینید تا از تغییرات مطمئن بشید
# Modify edit_this_file.rb file
git add .
git stash save "Saving changes from edit this file"
git stash list
git status
git stash pop
git stash list
git status
منبع: https://docs.gitlab.com/ee/topics/git/stash.html