Was sind typische Anwendungsfälle für die --merge- und --keep-Flags von git-reset?
In einemLetzte Antwort in denen er die typischen Anwendungsfälle vongit-reset
Die drei am häufigsten verwendeten Optionen (--hard
, --mixed
, und--soft
),torek Erwähnungen im Vorbeigehengit-reset
bietet auch zwei relativ esoterische Flaggen an, genannt--merge
und--keep
. Dasgit-reset
Manpage beschreibt diese beiden Flags wie folgt:
--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.
Ich verstehe vollkommen, wann man verwendet--hard
, --mixed
, oder--soft
, aber das habe ich erst gelernt--merge
und--keep
existierte beim Lesen von Toreks Antwort, und ich kann mir keine praktischen Anwendungsfälle dieser beiden Flags vorstellen ... In welchen Situationen verwenden Sie normalerweise diese beiden Flags?
Ich suche hauptsächlich eine einfache englische Erklärung. Nehmen Sie die folgende Passage vonDiese Antwort von VonC, was einen typischen Anwendungsfall fürgit reset --soft
, Wie ein Model:
[...] jedes Mal:
Sie sind zufrieden mit dem, was Sie erreichen (in Bezug auf den Arbeitsbaum und den Index)Sie sind nicht mit allen Verpflichtungen zufrieden, die Sie dorthin geführt haben:git reset --soft
ist die Antwort.
Ich bin jedoch nicht abgeneigt, ein wenig mit diesen Flaggen zu experimentieren, ähnlich dem albernen Beispiel einer Einkaufsliste, in dem ich geschrieben habeDiese Antwort von mir.