Git Stash
Последнее обновление
git stash откладывает ваши незакоммиченные изменения и возвращает рабочее дерево в чистое состояние, чтобы вы могли переключить ветку или сделать pull, не коммитя незавершённую работу. Изменения помещаются в стек, к которому можно вернуться позже с помощью git stash pop (применить и удалить) или git stash apply (применить и сохранить).
Попробуйте это в терминальном playground - настоящая оболочка в вашем браузере, ничего устанавливать не нужно.
Синтаксис
| Command | What 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
| Behavior | git stash pop | git 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 также пошагово охватывает управление незавершённой работой.