Як Git Stash допоможе вам у роботі з декількома гілками

4 хв. читання

Під час роботи з декількома гілками в Git дуже легко заплутатись і внести зміни не на ту гілку. Або інша ситуація: ви працюєте над певною фічею, та ще не готові закомітити свої зміни, а хтось просить вас екстрено пофіксити баг — і вам треба перейти на іншу гілку. Тут на допомогу приходить команда git stash.

Створення та застосування stash

З командою stash ви можете зберегти копію незакомічених змін на поточній робочій гілці.

Як Git Stash допоможе вам у роботі з декількома гілками

В найпростішому варіанті команда git stash створює stash entry. Щоб застосувати збережені зміни пізніше, ми можемо використати git stash apply.

Створюємо stash:

git stash

Застосовуємо збережені зміни для поточної робочої гілки:

git stash apply

Ми можемо застосувати створений stash entry до різних гілок — це не обов'язково повинна бути гілка, з якої ми створили stash.

stash для невідстежуваних файлів

Автоматично git stash застосовується лише до відстежуваних файлів. Якщо ви хочете створити чи застосувати stash також і до невідстежуваних файлів (або до файлів з вашого .gitignore), ви можете додати до команди прапор -u (або --include-untracked)

Тобто, щоб створити stash з невідстежуваними файлами:

git stash -u

А щоб застосувати ці зміни:

git apply -u

Створення декількох stash

git stash apply застосує зміни з останнього stash на вашій робочій гілці. Але також можна зберігати декілька stash одночасно, а застосовувати їх по черзі. Щоб вивести список всіх створених stash, використайте команду git stash list. Тоді отримаєте щось подібне:

git stash list
stash@{0}: WIP on my-branch: ca96af0 Commit message 3
stash@{1}: WIP on my-branch: 03af20c Commit message 2
stash@{2}: WIP on my-branch: 216b662 Commit message 1

Ваші stash матимуть стандартну назву WIP (Work in Progress), далі вказується назва гілки та дані коміту, з якого був створений stash. Проте така інформація не дуже допоможе нам, якщо у нас багато збережених stash — складно зрозуміти, які саме зміни ми будемо застосовувати. Натомість ми можемо додати до нашого stash власне повідомлення з більш детальною інформацією про зміни:

git stash save 'my brand new stash'

Тепер той самий перелік stash матиме такий вигляд:

git stash list
stash@{0}: On my-branch: my brand new stash
stash@{1}: WIP on my-branch: ca96af0 Commit message 3
stash@{2}: WIP on my-branch: 03af20c Commit message 2
stash@{3}: WIP on my-branch: 216b662 Commit message 1

Щоб застосувати певний stash з нашого списку, ми можемо посилатися на нього в команді apply:

git stash apply stash@{2}

(замініть останню частину на посилання потрібного stash)

Наступні stash додаються на початок списку. Останній stash матиме посилання stash@{0}.

Список може містити також stash з різних гілок, які можна застосувати до будь-яких гілок вашого проєкту.

Як Git Stash допоможе вам у роботі з декількома гілками

Застосування та видалення stash

Коли ви використовуєте команду apply stash, копія stash зберігається у списку — тому ми можемо застосувати один stash до декількох гілок. Якщо виконати git stash list після застосування stash apply, ми все ще побачимо його у списку.

Виводимо усі збережені stash:

git stash list

Якщо нам треба видалити stash зі списку після його застосування, використовуйте pop замість apply:

git stash pop

pop відрізняється від apply тим, що або видаляє останній stash сам, або певний stash, якщо ми вказали посилання :

git pop stash@{2}

Команда pop — вдалий вибір, якщо ви не збираєтесь застосовувати збережені зміни на інших гілках, до того ж не хочете забруднювати список stash.

Створення нової гілки та одночасне застосування stash

Команда branch дозволяє створити нову гілку та застосувати до неї останній stash:

git stash branch

Наведена команда — лише скорочена версія цих команд:

git checkout -b my-new-branch
git stash apply

Ми так само можемо тут посилатися на певний stash наприкінці команди:

git stash branch stash@{2}

Як видалити або очистити stash

Варто видаляти непотрібні stash, аби вони не забруднювали список. Особливо важливо пам'ятати про це, коли перемикаєтесь між декількома гілками, адже набагато простіше вибрати потрібний stash, коли у списку їх декілька, а не 1000. До того ж часто, коли зміни вже закомічені, stash нам більше не потрібен.

Окремі stash можна видалити зі списку командою git stash drop. Як і у випадку з pop та apply, команда сама застосується до останнього stash. Щоб виконати команду для іншого stash, використайте відповідне посилання:

git stash drop stash@{2}

Якщо вам потрібно очистити усі ваші stash, виконайте команду:

git stash clear
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 6.2K
Приєднався: 7 місяців тому
Коментарі (1)
Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація