Если вам не нравится использование stash, и у меня лично нет причин не использовать его, вы можете попробовать сделать временный коммит в ветке feature
:
# work work work
git add <file1>
# ... and add other files
git commit -m 'temporary commit for some feature'
Затем вы можете переключиться на ветку develop
, чтобы делать все, что у вас на уме.Когда вы вернетесь в ветку feature
, вы можете либо просто продолжить работу над этим коммитом, либо попытаться вернуться к исходному рабочему состоянию.Чтобы вернуться к тому, как все выглядело, когда вы были в середине работы, вы можете попробовать сделать смешанный сброс:
git reset --mixed <SHA-1 of temporary commit>
Это переместит HEAD вашей ветви назад на один коммит вместе с индексом.Таким образом, у вас останется рабочий каталог, содержащий вашу текущую работу, но без какого-либо фактического коммита в вашей ветке feature
.Теперь вы можете завершить текущую функцию и сделать постоянный коммит.
Но обратите внимание, что сам git stash
на самом деле реализован под капотом, сделав два (или иногда три) коммита для хранения вашей текущей работы.Итак, мой ответ на самом деле использует похожий подход к тайнику, но с некоторыми отличиями.