Ответ
Git stash — это команда для временного сохранения незакоммиченных изменений (как staged, так и unstaged) в рабочей директории. Это позволяет переключиться на другую ветку или задачу, не создавая промежуточных коммитов.
Основные команды:
# Сохранить текущие изменения с сообщением
git stash save "WIP: работа над функцией X"
# Показать список всех сохранённых stash'ей
git stash list
# Применить последний stash (не удаляя его из списка)
git stash apply
# Применить конкретный stash по индексу
git stash apply stash@{2}
# Применить и удалить последний stash из списка
git stash pop
# Удалить конкретный stash
git stash drop stash@{1}
# Очистить все stash'и
git stash clear
Ключевые особенности:
- Изменения сохраняются в локальном хранилище Git (в директории
.git) - Можно создавать несколько stash'ей с разными сообщениями
- Stash не передаётся при пуше в удалённый репозиторий
- Полезен при срочных правках в другой ветке или при необходимости "очистить" рабочую директорию для тестирования
Практический пример:
# Вы работаете над feature-веткой
# Появляется срочный баг в main
git stash # Сохраняем текущую работу
git checkout main # Переключаемся на main
# Исправляем баг, коммитим, пушим
git checkout feature-branch # Возвращаемся к своей работе
git stash pop # Восстанавливаем сохранённые изменения Ответ 18+ 🔞
О, глянь-ка на эту штуку — git stash! Это ж как волшебный чердак для твоего кода, куда можно на время свалить всю свою незаконченную хуйню, чтобы не мозолила глаза.
Представь: сидишь ты, такой, в своей ветке feature-вау, пишешь гениальный код. Вдруг — охуеть! — прилетает: «Срочно пофикси баг в main, всё горит!». А у тебя всё в рабочей директории перепахано, коммитить рано, бросать страшно. Вот тут-то наш спаситель и выручает.
Вот как этим чудом пользоваться:
# Запихнуть всё своё добро на чердак, да ещё и с бирочкой
git stash save "WIP: тут я изобретал вечный двигатель"
# Посмотреть, что у тебя там на чердаке валяется
git stash list
# Достать последнюю стопку обратно (но она на чердаке останется)
git stash apply
# Достать конкретную стопку, например, ту, что была две позиции назад
git stash apply stash@{2}
# Достать и сразу выкинуть пустую коробку с чердака — классика!
git stash pop
# Выкинуть нахуй какую-то одну старую стопку
git stash drop stash@{1}
# Устроить тотальную зачистку чердака. Осторожно, безвозвратно!
git stash clear
Важные нюансы, чтобы не обосраться:
- Вся эта сокровищница живёт только у тебя локально, в твоей
.git-директории. На удалённый репозиторий эту срань не зальёшь. - Можно накопировать овердохуища разных stash'ей, главное — подписывать, а то потом не разберёшь, где вечный двигатель, а где «пофиксил опечатку».
- Идеально, когда нужно резко переключить контекст, а рабочую директорию сделать чистой, как попову совесть, для тестов или мержа.
Живая ситуация, как в кино:
# Ты в своей ветке, в процессе
# Прилетает: «ВСЁ ПАДАЕТ, НУЖЕН ТЫ!»
git stash # Швырнул всё в кучу и накрыл одеялом — порядок!
git checkout main # Перепрыгнул на main, как циркач
# Тушишь пожар, коммитишь, пушишь — герой!
git checkout feature-вау # Возвращаешься к своему гениальному детищу
git stash pop # Вытряхиваешь из чердака обратно все свои наработки
# И продолжаешь, будто ничего и не было. Магия, ёпта!
Вот такая хитрая жопа — git stash. Не коммит, но и не потерянные изменения. Просто временная камера хранения для твоего кодового бардака. Пользуйся, не стесняйся!