Quais são os casos de uso típicos dos sinalizadores --merge e --keep do git-reset?
Em umresposta recente em que ele detalha os casos de uso típicos degit-reset
as três opções mais usadas (--hard
, --mixed
e--soft
),torek menciona de passagem quegit-reset
também oferece duas bandeiras relativamente esotéricas, chamadas--merge
e--keep
. ogit-reset
página de manual descreve esses dois sinalizadores da seguinte maneira:
--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.
Eu entendo perfeitamente quando usar--hard
, --mixed
ou--soft
, mas eu só aprendi isso--merge
e--keep
existia enquanto lia a resposta de torek, e não consigo pensar em casos de uso prático dessas duas bandeiras ... Em que situações você normalmente usa essas duas bandeiras?
Estou procurando principalmente uma explicação simples em inglês. Tome a seguinte passagem deesta resposta por VonC, que descreve um caso de uso típico paragit reset --soft
, como um modelo:
[...] cada vez:
você está satisfeito com o que termina (em termos de árvore de trabalho e índice)você não está satisfeito com todos os commits que levaram para chegar lá:git reset --soft
é a resposta.
No entanto, não estou acostumado a um pequeno experimento com essas bandeiras, semelhante em espírito ao exemplo bobo de lista de compras que publiquei emesta minha resposta.