Каковы типичные случаи использования флагов --merge и --keep в git-reset?
Внедавний ответ в котором он подробно описывает типичные случаи использованияgit-reset
три наиболее часто используемых варианта (--hard
, --mixed
, а также--soft
),Торек мимоходом упоминает, чтоgit-reset
также предлагает два относительно эзотерических флага, называемые--merge
а также--keep
,git-reset
справочная страница описывает эти два флага следующим образом:
--merge
Resets the index and updates the files in the working tree
that are different between <commit> and HEAD, but keeps
those which are different between the index and working tree
(i.e. which have changes which have not been added). If a
file that is different between <commit> and the index has
unstaged changes, reset is aborted.
In other words, --merge does something like a git read-tree
-u -m <commit>, but carries forward unmerged index entries.
--keep
Resets index entries and updates files in the working tree
that are different between <commit> and HEAD. If a file that
is different between <commit> and HEAD has local changes,
reset is aborted.
Я прекрасно понимаю, когда использовать--hard
, --mixed
, или же--soft
, но я только узнал, что--merge
а также--keep
существовал при чтении ответа Торека, и я не могу представить практические варианты использования этих двух флагов ... В каких ситуациях вы обычно используете эти два флага?
Я в основном ищу простое английское объяснение. Возьмите следующий отрывокэтот ответ VonC, который излагает типичный вариант использования дляgit reset --soft
, как модель:
[...] каждый раз:
вы удовлетворены тем, что вы в конечном итоге (с точки зрения рабочего дерева и индекса)Вы не удовлетворены всеми коммитами, которые потребовали вас, чтобы попасть туда:git reset --soft
это ответ.
Тем не менее, я не против небольшого эксперимента с этими флагами, похожего по духу на глупый пример списка покупок, который я разместил вэтот мой ответ.