Menu
Coddy logo textTech

Git Stash

Последнее обновление

git stash откладывает ваши незакоммиченные изменения и возвращает рабочее дерево в чистое состояние, чтобы вы могли переключить ветку или сделать pull, не коммитя незавершённую работу. Изменения помещаются в стек, к которому можно вернуться позже с помощью git stash pop (применить и удалить) или git stash apply (применить и сохранить).

Попробуйте это в терминальном playground - настоящая оболочка в вашем браузере, ничего устанавливать не нужно.

Синтаксис

CommandWhat it does
git stashОтложить отслеживаемые изменения, очистить рабочее дерево
git stash -uТакже откладывает неотслеживаемые файлы
git stash push -m "msg"Отложить с описательным сообщением
git stash push <file>Отложить только определённый файл
git stash listПоказать список всех stash'ей
git stash popПовторно применить последний stash и удалить его
git stash applyПовторно применить последний stash, сохранить его
git stash dropУдалить последний stash
git stash clearУдалить все stash'и

pop vs apply

Behaviorgit stash popgit stash apply
Повторно применяет измененияДаДа
Удаляет stash после этогоДаНет
Подходит для повторного использования stash'аНетДа

Часто задаваемые вопросы о git stash

Что делает git stash?
Он сохраняет ваши незакоммиченные изменения в стек и сбрасывает рабочее дерево до последнего коммита, давая вам чистое начало. Ваши изменения не теряются - они откладываются и могут быть повторно применены позже с помощью git stash pop или git stash apply. Это удобно, когда нужно переключить ветку, но вы ещё не готовы делать коммит.
В чём разница между git stash pop и git stash apply?
Оба повторно применяют ваш самый последний stash к рабочему дереву. git stash pop затем также удаляет этот stash из стека, тогда как git stash apply оставляет его в стеке, чтобы вы могли применить его снова в другом месте. Используйте pop для однократного восстановления, а apply - когда хотите повторно использовать stash.
Включает ли git stash неотслеживаемые файлы?
По умолчанию нет - обычный git stash откладывает только отслеживаемые (изменённые) файлы. Добавьте -u (git stash -u), чтобы включить неотслеживаемые файлы, или -a, чтобы включить также игнорируемые файлы. Без этих флагов новые файлы, к которым вы не применяли git add, остаются в вашем рабочем дереве.
Как применить конкретный stash?
Выполните git stash list, чтобы увидеть их пронумерованными как stash@{0}, stash@{1}, затем git stash apply stash@{1} (или pop), чтобы повторно применить конкретный. Каждый stash также показывает ветку и сообщение, с которыми он был создан, чтобы вы могли их различать.
Могу ли я попрактиковаться в этом онлайн?
Да. Откройте терминальный playground, чтобы запустить git stash в настоящей оболочке в вашем браузере - ничего устанавливать не нужно. Бесплатный интерактивный курс Git от Coddy также пошагово охватывает управление незавершённой работой.
Coddy programming languages illustration

Изучайте Git с Coddy

НАЧАТЬ