Как сохранить временные наработки с Git без коммита
Рассмотрим, как сохранить промежуточные результаты работы, когда вы не считаете сделанные изменения достаточными для коммита, но требуется временно переключиться на другое состояние.
Для таких ситуация в Git предусмотрена команда -
git stash
Рассмотрим ее работу на практике. Пусть мы работаем с проектом, имеющим два коммита V1 и V2 (в каждом сохранен модуль с командой print('Vномер_версии')):
На очередном шаге содержимое модуля заменено на:print('V3').
Если вызвать команду git stash, то изменения будут сохранены в буфере памяти, а содержимое изменится в соответствии с предыдущим коммитом на print('V2'):
Теперь можно перейти в другое состояние и сделать необходимые действия. Например, откатимся к V1, добавим строку print('V11') и сохраним в буфере изменения. Теперь в стеке будет уже два временных состояния. Чтобы это посмотреть, можно вызвать команду
git stash list
Теперь вернемся к коммиту V2 и применим изменения из стека:
git stash apply stash@{1}
Файл вернется к виду:
Если бы мы попытались восстановить версию 0 из стека, получили бы конфликт, так как она сохранена из предыдущего коммита:
Также в этом случае понадобится скорректировать файл: