Як перенести незавершену роботу на іншу гілку, якщо потрібно терміново переключитися?
Часто в процесі розробки виникає ситуація, коли ви захоплено пишете код у поточній гілці, але раптово надходить завдання терміново виправити критичний баг у продакшені. Пряме переключення на іншу гілку через checkout або switch неможливе, якщо ваші поточні зміни конфліктують із цільовою гілкою або якщо ви взагалі не хочете їх комітити в сирому вигляді.
Найшвидшим рішенням цієї проблеми є тимчасова ізоляція змін. Для цього можна використовувати команду git stash, яка зберігає всі змінені відстежувані файли в спеціальному прихованому сховищі та повертає робочу директорію до стану останнього коміту. Проте у команди git stash є більш просунута альтернатива — створення тимчасової гілки просто на льоту.
Якщо ви хочете повністю ізолювати незавершений функціонал, найкраще зафіксувати поточний прогрес через створення окремої тимчасової гілки. Для цього використовується команда git checkout -b temp-fix або git switch -c temp-fix. Ви можете зробити проміжний коміт поточного стану, навіть якщо код ще не до кінця готовий або не збирається.
Після цього ви спокійно переключаєтеся на потрібну гілку з продакшеном, виправляєте баг, відправляєте виправлення у віддалений репозиторій і повертаєтеся назад. Якщо ви використовували тимчасову гілку для своїх сирих виправлень, то після повернення ви можете продовжити роботу з того ж місця або об'єднати цю тимчасову гілку з основною робочою гілкою після завершення термінового завдання.
Якщо ви все ж таки застосували збереження в стек, то для повернення змін назад у робочу директорію використовується команда git stash pop. Вона витягує останній запис зі стека і застосовує його до поточного коду, одночасно видаляючи цей запис зі сховища. такий підхід дозволяє гнучко керувати робочим контекстом і не втрачати напрацювання при переключенні між завданнями.