Изучаем Git. Урок 12.
git stash
Видеоурок
Конспект урока
Краткое содержание урока, основные инструкции для командной строки, полезные ссылки и советы.
Что такое git stash
Инструмент git stash очень похож на множественный буфер обмена. Это те же привычные команды Вырезать и Вставить. Только с той разницей, что мы работаем не с выделенным текстом и файлами, а с изменениями кода.
Зачем нужен git stash
Для того, чтобы временно "вырезать" изменения и позже "вернуть" их обратно. Причины использования git stash те же, что и при работе с буфером обмена
Как "вырезать" или "застэшить" изменения
Это самое простое использование git stash - без параметров. Незафиксированные изменения при этом "вырезаются" в "буфер обмена"
Как "вернуть" изменения обратно
git stash - это аналог множественного буфера обмена, поэтому стэшить изменения можно сколько угодно раз. Можно в разных ветках, можно в одной и той же
git stash pop без параметров вытаскивает стэш, который попал в буфер последним
Как просмотреть список стэшей
Эта команда выводит список доступных стэшей в формате: id, WIP (Work In Progress), ветка, на которой был сделан стэш, и хэш и message последнего коммита в ветке
Как застэшить со своим сообщением
Смотрим список файлов в стэше
Подробная информация о стэше
Информация показывается в том же виде, что и при git log -p
В чем отличие pop и apply
Функция команд git stash pop и apply одна и та же - выстаскивать изменения из стэша. Отличие в одном - pop при этом удаляет стэш, а apply - нет.
С apply удобно работать, когда мы собираемся применять стэш несколько раз
Команда так же работает с параметром, если нужно применить не последний, а конкретный стэш
Удаление стэша
Команда просто удаляем стэш
Очистка стэша
Удаляем все стэши
Стэш с новыми файлами
Если мы создали новый файл, то при git stash он в стэш не попадет. Иногда это вызывает неудобства по двум причинам
- Можно случайно закоммитить лишний файл
- Если этот файл относится к застэшенным изменениям, поэтому хорошо бы держать его там же, в стэше
Флажок -u решает эту проблему
Конфликты при git stash
Конфликты при git stash pop или apply возникают по тем же причинам, что и обычные конфликты при мердже веток. Разрешаются они аналогичным способом
Работа с git stash в PhpStorm
PhpStorm поддерживает все операции со стэшем, что и командная строка. На мой взгляд, просматривать изменения в стэше в PhpStorm удобнее, как и в случае с git log. Но как работать вам - дело привычки и удобства
Заключение
git stash - очень удобный инстумент, без которого работать так же неудобно, как и без буфера обмена. Небольшая практика - и вы будете работать с git stash так же непринужденно, как и с привычными командами Ctrl+X и Ctrl+V
Спасибо за внимание и до встречи!