Что такое Stash

Ответ

Stash в Git — это временное хранилище, куда можно отложить незавершённые изменения, чтобы переключиться на другую задачу, не коммитя их. Полезен, когда нужно быстро переключить контекст, но нет желания создавать "грязный" коммит.

Основные команды:

git stash          # сохранить изменения в stash
git stash pop      # вернуть последние отложенные изменения и удалить их из stash
git stash list     # показать список stash'ей
git stash apply    # применить изменения из stash, но не удалять их

Пример:

# Работаем над feature, но срочно нужно пофиксить баг
git stash          # откладываем текущие изменения
git checkout main  # переключаемся на main
# исправляем баг, коммитим, пушим
git checkout feature
git stash pop      # возвращаем отложенные изменения

Stash хранит изменения в виде WIP (Work In Progress) и позволяет легко вернуться к ним позже.

Ответ 18+ 🔞

А, слушай, про stash в гите — это ж как та самая заначка, куда ты срочно пихаешь всё своё барахло, когда мамка неожиданно заходит в комнату и кричит "наведи порядок, тут как у свиньи в хлеву!".

Вот ты сидишь, кодишь какую-то хуйню, уже пол-файла переписал, а тут — бац! — начальник орёт: "СРОЧНО ПОЧИНИ БАГ НА ПРОДАКШЕНЕ, ВСЁ Горит!". И коммитить твою полуготовую пиздопроёбину нельзя, и терять её неохота. Вот тут-то stash и выручает, как лучший друг-алкаш, который припрятал для тебя бутылку.

Основные заклинания, чтобы не облажаться:

git stash          # Всё, что не закоммичено, — хуяк в тайник! Рабочая директория чистая.
git stash pop      # Достал из тайника последнюю стопочку, выпил и выбросил фантик.
git stash list     # Смотришь, сколько у тебя этих стопочек уже накопилось (часто бывает стыдно).
git stash apply    # Достал, выпил, но фантик оставил на потом — вдруг ещё пригодится.

Живая картинка для твоего извилина:

# Кодишь какую-то ересь в ветке feature/костыль-на-костыле
git stash          # Шифруешь доказательства! Теперь git status чист, как слеза младенца.
git checkout main  # Перепрыгиваешь на main, как будто так и надо.
# Тушишь пожар, чинишь баг, коммитишь, пушишь — герой!
git checkout feature/костыль-на-костыле # Возвращаешься к своему бардаку.
git stash pop      # И — оп-па! — весь твой творческий беспорядок снова на месте. Магия, блядь!

По сути, stash — это такие временные черновики, которые гитом аккуратно складываются в стопочку. Их можно накопить овердохуища, потом по одному доставать. Главное — не забыть про них, а то через месяц будешь смотреть в git stash list и охуевать: "А это что за хуйня? Я это писал?".