Wow, never autopush all your tags. What a terrible idea! Once a tag escapes into the wild, it's so hard to ever get rid of it. Pushing a tag should require two people turning keys simultaneously or something, honestly.
zdiff3 is also NOT some kind of generic improvement over diff3, like swapping diff algorithms is sorta a generic improvement. It behaves very differently; if you have
[original]
this is a line
[left branch]
This is a line.
This is a second line.
[right branch]
This is a line.
This is another line.
then diff3 shows <<<<<<<
This is a line.
This is a second line.
|||||||
this is a line
=======
This is a line.
This is another line.
>>>>>>>
while zdiff3 modifies this in a very matter-of-personal-taste way to: This is a line.
<<<<<<<
This is a second line.
|||||||
this is a line
=======
This is another line.
>>>>>>>
This is incredibly bizarre to my eye, but some prefer how it's already "partially resolved" for them. But it's hardly something to swap in thoughtlessly for the other!
+1 on zdiff3. It makes little sense to me; it seems like it can describe different conflicts in the same way. I think diff3 is the only sane choice (the default 2-sided presentation is also somewhat sane, though questionable. It loses important information but is simpler).
zdiff3 is described here: < https://git-scm.com/docs/git-merge#_how_conflicts_are_presen...>. The example in there makes zdiff3 look quite confusing, since it makes it look as though a line was deleted on both sides. For a while, I thought including the identical line in the base it must be a typo, but apparently that's how it's supposed to work.
See also https://lore.kernel.org/git/CAO_smVg=1gFBudrd70V2_AXSPOUTFz=...
Agreed. If you're using tags for anything other than final releases off of main/master (or other release branches that are supposed to be permanent), you've gone down a very bad path.
I use tags for all kinds of personal, often temporary, things, so, yeah, no followTags