Команди Git

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 list
git stash show -p stash@{0}

Застосувати стеш, не видаляючи його, і відновити як зміни в робочому дереві, так і зміни в області підготовки:

git stash apply --index stash@{1}

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

Видалити конкретний запис зі списку стешів:

git stash drop stash@{0}

Очистити всі стеші, коли вони більше не потрібні:

git stash clear