Пошук уроків, статей та іншого контенту
Як швидко перемкнутись на іншу гілку, не комітуючи й не втрачаючи незавершену роботу.
Git не дозволяє перемкнутись на іншу гілку (git switch), якщо це призвело б до втрати незакомічених змін у файлах, які відрізняються між гілками, — а комітувати явно незавершену, «недороблену» роботу лише заради перемикання гілки небажано, бо забруднює історію напівготовими комітами.
git stash # відкласти всі незакомічені зміни, повернути робочу директорію до чистого стану
git switch other-branch # тепер можна вільно перемикатись
# ...робота на іншій гілці...
git switch feature/login-form
git stash pop # повернути відкладені зміни назад і прибрати їх зі списку stashgit stash зберігає поточні незакомічені зміни в окремому, прихованому від звичайної історії списку й повертає робочу директорію до чистого стану останнього коміту — ніби змін і не було. git stash pop повертає найновіші відкладені зміни назад у робочу директорію.
Stash — це список, а не єдине значення: можна відкласти зміни кілька разів поспіль на різних гілках чи в різний час, і кожен запис лишається доступним, доки його явно не застосувати чи не видалити:
git stash list
# stash@{0}: WIP on feature/login-form: a1b2c3d Додати валідацію
# stash@{1}: WIP on main: f4e5d6c Виправити стилі
git stash apply stash@{1} # застосувати конкретний запис зі списку, лишивши його в списку
git stash drop stash@{1} # видалити конкретний запис зі списку без застосуванняgit stash pop = git stash apply + git stash drop за один крок — застосовує найновіший запис і одразу прибирає його зі списку. git stash apply без drop корисний, коли ту саму відкладену зміну потрібно застосувати до кількох різних гілок.
Забути про накопичені записи в stash — git stash list, забутий на тижні, поступово перетворюється на власне звалище незрозумілих, невідстежуваних змін.
Очікувати, що git stash зберігає нові, ще не додані в git add файли за замовчуванням, — потрібен прапорець git stash -u (--include-untracked), інакше зовсім нові файли лишаються в робочій директорії й далі заважають перемиканню.
Використовувати stash як заміну нормальним, змістовним комітам для тривалого зберігання роботи — stash призначений для короткострокового, тимчасового відкладання, не для довготривалого зберігання незавершеної роботи.
git stash тимчасово відкладає незакомічені зміни в окремий список, повертаючи робочу директорію до чистого стану, — зручно для швидкого перемикання гілок без передчасного коміту незавершеної роботи. git stash pop повертає найновіший запис назад; при кількох відкладених наборах змін git stash list і git stash apply stash@{N} дають доступ до конкретного запису.