I don’t understand why a `git log -p` on a merge commit doesn’t show the conflict resolution diff. Where do the conflict resolution changes go after a merge? To me, they seem to disappear magically.

@otini because unlike darcs or pijul git is not based around patches but storing snapshots. patches are computed on demand by diffing the snapshots (tree objects in git parlance).

They don't go anywhere the resulting snapshot is stored in the git db.

You could reconstruct that information. but that information is not a patch, but works on top of patches. What would be a good way to present that information? As merge commits have two parents or more. So the 'input' may be more than 2 patches.

@PuercoPop Thank you, this helps a lot.

Apparently some well-chosen commands can show the conflict resolution changes:

@otini Nice, I didn't know about about the c and cc commands. But git show --cc doesn't show you the resolution. Only the difference between the snapshots + some heuristics to hide "uninteresting" files. (using git diff-tree)

@otini Git tracks the states of the tree, the diffs are generated from them. So, yes, the patches don't exist.

@amiloradovsky That makes much more sense when you think about it this way.

Sign in to participate in the conversation
Functional Café

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!