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.