git stash
git stash: тимчасово сховати зміни з робочої директорії на потім, повернувши робочу директорію до чистого стану (стану останнього коміту).
Коли ти запускаєш git stash, Git бере правки у відстежуваних файлах (і все, що додано в область підготовки) і складає їх у тимчасове сховище — стеш (stash). Робочі файли повертаються до того вигляду, який був в останньому коміті.
Це зручно, коли треба поставити роботу на паузу (наприклад, перемкнутися на іншу гілку, підтягнути свіжі зміни або спробувати щось ризиковане) і не втратити прогрес. За замовчуванням Git не чіпає невідстежувані файли, але за бажанням їх теж можна включити.
Стеш працює як стос карток: нові зміни кладуться зверху, а коли вони знову потрібні, знімаються з верхівки. Здебільшого ти використовуватимеш git stash (те саме, що git stash push), щоб створити новий стеш, а пізніше застосовуватимеш його знову через git stash pop — ця команда заразом видалить стеш зі списку.
Кожен стеш отримує ідентифікатор на кшталт stash@{0}, де 0 — найсвіжіший запис. Стеші можна будь-коли переглядати, застосовувати, інспектувати, видаляти по одному або чистити всі одразу.
Приклади
Тимчасово сховати поточні зміни й очистити робочу директорію:
git stashТе саме, що:
git stash pushЗастосувати найсвіжіший стеш і видалити його зі списку:
git stash popДодати до стешу зрозуміле повідомлення, щоб потім було легше його впізнати:
git stash push -m "WIP: responsive header"Включити в стеш невідстежувані файли:
git stash push -uПереглянути, що зараз лежить у стешах, і подивитися diff конкретного запису:
git stash listgit stash show -p stash@{0}
Застосувати стеш, не видаляючи його, і відновити як зміни в робочому дереві, так і зміни в області підготовки:
git stash apply --index stash@{1}Це знадобиться, якщо треба застосувати стеш у кількох гілках або зберегти його на майбутнє.
Видалити конкретний запис зі списку стешів:
git stash drop stash@{0}Очистити всі стеші, коли вони більше не потрібні:
git stash clear.gitignoregit checkoutgit configgit taggit worktree