Thread (1 message) 1 message, 1 author, 2020-07-24

Re: Improving merge of tricky conflicts

From: Junio C Hamano <hidden>
Date: 2020-07-24 06:01:36

Jacob Keller [off-list ref] writes:
On Thu, Jul 23, 2020 at 2:43 PM Junio C Hamano [off-list ref] wrote:
quoted
If your merge used the merge (as opposed to diff3) style, and seeing
that the resulting conflict is not easy to review and you wish you
used diff3 style instead, it is way too late for any option to "git
merge" to help you.

But having an option to "git checkout" lets you move forward from
that state, so it also makes 100% more sense than an option to "git
merge".
Perhaps the issue is just that it's not discoverable easily because
it's a different command.
That may be true.

By the way, "git checkout --conflict=<style>" is a short-hand for
"git checkout --merge --conflict=<style>" and it is quite useful not
just in the said case of "oops, I cannot read this conflict with the
'merge' style---let's switch to 'diff3' style".  After starting to
attempt resolving the conflict, sometimes I become unsure if the
resolution I've been working on is correct, and want to start from
scratch.  In such a case, even without switching the style to a
different one, "git checkout --merge" to discard the changes I made
in the working tree file and reproduce the auto-merged state with
conflict markers, is a good tool in your toolbox to know (being able
to give a different conflict style is merely a natural extension of
the feature).

Perhaps in Documentation/git-merge.txt there can be a mention of

	When you really screwed up your resolution, you could use
	"git checkout --merge -- $paths" to revert selected paths
	back to the state just before the auto-merge gave up and
	asked your help in resolving.  The --conflict=<style> option
	can be used instead of the "--merge" option in the command
	to use a different conflict marking style.  See
	git-checkout[1] for details.

or something along that line.  People who are unware of "checkout -m"
in such a situation may run "git reset --hard" and redo the whole
merge from scratch, but you do not have to discard the resolution
you made in other paths successfully only to redo a few files that
you botched.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help