← Все вопросы

Как временно спрятать незакоммиченные изменения через git stash?

Задан 23 месяца назад875 просмотров2 ответа
9

Работаю над фичей, всё в правках, и тут срочно надо переключиться на другую ветку чинить баг. Коммитить полуготовое не хочу. Как временно отложить изменения и потом вернуть? Слышал про git stash.

2 ответа

10
✓ Принятый ответ — помог автору

git stash — это «карман», куда можно временно спрятать незакоммиченные изменения и вернуться к чистой рабочей папке.

Спрятать текущие правки:

git stash

Все незакоммиченные изменения уберутся «в карман», рабочая папка станет как в последнем коммите. Теперь можно спокойно переключиться на другую ветку, починить баг, закоммитить.

Вернуть спрятанное обратно:

git stash pop

Это достанет изменения из кармана и удалит их из стэша. Если хочешь достать, но оставить копию в стэше — используй git stash apply.

Посмотреть, что лежит в стэше (их может быть несколько):

git stash list

Полезно дать стэшу имя, чтобы потом не путаться:

git stash push -m "половина формы логина"

Важный нюанс: обычный git stash по умолчанию не прячет новые (untracked) файлы — те, что ты ещё не добавлял через git add. Чтобы спрятать и их, добавь флаг -u:

git stash -u

Частая ошибка: спрятать изменения, наделать новых дел, забыть про стэш — а потом удивляться, куда делся код. Возьми за правило после переключения проверять git stash list. И не делай слишком много стэшей подряд — легко запутаться, какой из них какой.

3

Краткая памятка по stash:

  • git stash — спрятать правки.
  • git stash -u — спрятать вместе с новыми файлами.
  • git stash pop — вернуть и удалить из стэша.
  • git stash apply — вернуть, но оставить в стэше.
  • git stash list — что лежит в кармане.
  • git stash drop — выбросить ненужный стэш.

Альтернатива стэшу — просто сделать временный коммит «WIP» и потом откатить его через git reset --soft HEAD~1. Кому что удобнее.

Ваш ответ

Войдите, чтобы ответить на вопрос.