В Magit, в чем разница между «тайником» и «снимком»?

17

Руководство пользователя Magit включает в себя два набора «припрятать» команд: команды строчных сохранить тайник и команды верхнего регистра сохранить снимок . После консультации с Google, Stack Overflow и git-stash(1)справочной страницей я все еще не знаю, в чем разница.

Какая разница?

Норман Рэмси
источник
1
Насколько я понимаю, stashэто также сбросит (отменит) изменения и snapshotоставит изменения в рабочей области (может быть полезно, если вы собираетесь переставлять коммиты перед нажатием).
wvxvw

Ответы:

24

Оба варианта "stash" и "snapshot" создают одинаковые объекты stash. Разница в том, что при создании моментального снимка сохраненные изменения не удаляются из файлов в рабочем дереве и / или индексе. (Точно так же, как когда вы делаете снимок ваших друзей, которые хорошо проводят время, это тоже не значит, что они исчезают ;-)

Это задумано как механизм резервного копирования. Скажем, вы выполняете сложный рефакторинг, и вы только что протестировали, и измененный код все еще работает, но вы еще не сделали. Сейчас самое время создать снимок, чтобы вам было к чему вернуться, если позже все испортится.

Конечно, вы можете просто создать временную фиксацию "wip" прямо в ветке, над которой вы работаете, чтобы выполнить то же самое. Это обычно то, что я делаю.

И вы также можете автоматизировать процесс записи незавершенного производства, включив режим Wip . У меня эти режимы включены как сеть безопасности, но я все еще создаю коммиты wip непосредственно в текущей ветке или создаю снимок. С ними легче работать, чем с wip refs.

Обратите внимание, что Magit поставляется с собственной реализацией stash, написанной на Elisp. Это было необходимо для реализации вариантов моментального снимка и вариантов хранилища только для рабочих деревьев и только для индексов. Git не предоставляет ни одного из этих вариантов.

Tarsius
источник