У Magit, яка різниця між "сховищем" та "знімком"?


18

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

Яка різниця?


1
Я розумію, що stashтакож скине (скасує) зміни та snapshotзалишить зміни в робочій області (може бути корисно, якщо ви збираєтеся переставляти комісії перед натисканням).
wvxvw

Відповіді:


25

І варіанти "приховування", і "знімок" створюють однакові сховані об'єкти. Різниця полягає в тому, що коли ви створюєте знімок, приховані зміни не видаляються з файлів робочого дерева та / або індексу. (Як і коли ви робите знімок своїх друзів, які добре проводять час - це також не зникає ;-)

Це розроблено як резервний механізм різного роду. Скажімо, ви виконуєте складний рефакторинг, і ви тільки що протестували, і модифікований код все ще працює, але ви ще цього не зробили. Зараз би вдалий час створити знімок, щоб у вас було до чого повернутися, якщо ви зіпсуєте його згодом.

Звичайно, ви можете просто створити тимчасову команду "витягнути" прямо на гілці, над якою працюєте, щоб виконати те саме. Це, як правило, те, що я роблю.

Ви також можете автоматизувати процес запису незавершеного виробництва, включивши режими Wip . У мене такі режими включені як мережа безпеки, але я все одно створюю wip-комірки безпосередньо на поточній гілці або створюю знімок. З ними легше працювати, ніж з Wip refs.

Зауважте, що Magit поставляється зі своєю власною скриньою реалізацією, написаною в Elisp. Це було необхідне для реалізації варіантів знімків та варіантів сховищ, призначених лише для робочих дерев та покажчиків. Git не пропонує жодного з цих варіантів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.