Пояснення Git Stash: Як тимчасово зберігати локальні зміни в Git

У Git є область, яка називається схованкою, де ви можете тимчасово зберігати знімок змін, не передаючи їх до сховища. Це окремо від робочого каталогу, проміжної області чи сховища.

Ця функція корисна, коли ви внесли зміни до гілки, які ви не готові до фіксації, але вам потрібно перейти на іншу гілку.

Приховані зміни

Щоб зберегти зміни у схованці, запустіть команду:

git stash save "optional message for yourself"

Це зберігає ваші зміни та повертає робочий каталог до того, як він виглядав для останнього коміту. Заховані зміни доступні з будь-якої гілки цього сховища.

Зверніть увагу, що зміни, які ви хочете сховати, мають бути у відстежуваних файлах. Якщо ви створили новий файл і намагаєтесь сховати внесені зміни, ви можете отримати повідомлення про помилку No local changes to save.

Переглянути сховані зміни

Щоб побачити, що у вас в сховищі, запустіть команду:

git stash list

Це повертає список збережених знімків у форматі [email protected]{0}: BRANCH-STASHED-CHANGES-ARE-FOR: MESSAGE. [email protected]{0}Частина назви схованки, а число в фігурних дужках ( { }) є індексом цієї схованки. Якщо у вас декілька наборів змін сховано, кожен з них матиме інший індекс.

Якщо ви забули, які зміни були внесені в схованку, ви можете переглянути їх резюме за допомогою git stash show NAME-OF-STASH. Якщо ви хочете побачити типовий макет виправлення у стилі різниці (із позначками + і -и для почергових змін), ви можете включити -pопцію (для виправлення). Ось приклад:

git stash show -p [email protected]{0} # Example result: diff --git a/PathToFile/fileA b/PathToFile/fileA index 2417dd9..b2c9092 100644 --- a/PathToFile/fileA +++ b/PathToFile/fileA @@ -1,4 +1,4 @@ -What this line looks like on branch +What this line looks like with stashed changes

Отримати сховані зміни

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

  1. git stash apply STASH-NAME застосовує зміни та залишає копію у схованці
  2. git stash pop STASH-NAME застосовує зміни та видаляє файли зі схованки

Під час застосування змін можуть виникнути конфлікти. Ви можете вирішити конфлікти, подібні об'єднанню (див. git mergeДокладніше).

Видалити сховані зміни

Якщо ви хочете видалити сховані зміни, не застосовуючи їх, запустіть команду:

git stash drop STASH-NAME

Щоб очистити весь схованку, запустіть команду:

git stash clear