Руководство пользователя Magit включает в себя два набора «припрятать» команд: команды строчных сохранить тайник и команды верхнего регистра сохранить снимок . После консультации с Google, Stack Overflow и git-stash(1)
справочной страницей я все еще не знаю, в чем разница.
Какая разница?
stash
это также сбросит (отменит) изменения иsnapshot
оставит изменения в рабочей области (может быть полезно, если вы собираетесь переставлять коммиты перед нажатием).Ответы:
Оба варианта "stash" и "snapshot" создают одинаковые объекты stash. Разница в том, что при создании моментального снимка сохраненные изменения не удаляются из файлов в рабочем дереве и / или индексе. (Точно так же, как когда вы делаете снимок ваших друзей, которые хорошо проводят время, это тоже не значит, что они исчезают ;-)
Это задумано как механизм резервного копирования. Скажем, вы выполняете сложный рефакторинг, и вы только что протестировали, и измененный код все еще работает, но вы еще не сделали. Сейчас самое время создать снимок, чтобы вам было к чему вернуться, если позже все испортится.
Конечно, вы можете просто создать временную фиксацию "wip" прямо в ветке, над которой вы работаете, чтобы выполнить то же самое. Это обычно то, что я делаю.
И вы также можете автоматизировать процесс записи незавершенного производства, включив режим Wip . У меня эти режимы включены как сеть безопасности, но я все еще создаю коммиты wip непосредственно в текущей ветке или создаю снимок. С ними легче работать, чем с wip refs.
Обратите внимание, что Magit поставляется с собственной реализацией stash, написанной на Elisp. Это было необходимо для реализации вариантов моментального снимка и вариантов хранилища только для рабочих деревьев и только для индексов. Git не предоставляет ни одного из этих вариантов.
источник