I'm trying to learn Fugitive with a live project, particularly resolving a merge conflict as I find doing this manually pretty tedious. I don't know if this is a valid question, because I cannot reproduce the effect outside of the repo I'm working with and I've otherwise never seen it before.
Anyway, Git is reporting a merge conflict. However, when I go to edit the file that contains the conflict, I scroll to the annotations that Git adds to mark the conflict (what are these called, by the way?) and they are identical. Something like this:
<<<<<<< HEAD
These are identical
=======
These are identical
>>>>>>> merge-branch
They are completely identical. There's no anomalous whitespace in one or the other, no weird Unicode characters that look the same, etc. Byte-for-byte identical. As such, Fugitive/vimdiff doesn't work: The only difference it detects are those in-band annotations and so doing a :diffget
or :diffpull
just removes the annotation. Because the annotations are suitably separated, they're treated separately, so one has to do each one individually and you eventually end up with this obviously incorrect result:
These are identical
These are identical
At first I thought that the annotations had been accidentally committed into one of the branches -- that's the only explanation I could come up with -- but no, they're nowhere to be seen. The files are not exactly the same in each branch, but they don't have conflicting differences.
It seems obvious that Git (2.28.0) is incorrectly marking a conflict and Vim/Fugitive are working fine. What is going wrong here?