@b0rk For the case with merges I don't know of anything that's better than `log --graph` and I also don't really know how I'd want to see the cases with weird merges printed.
For the case with no merges, have you looked at `git log --topo-order --graph`? If there are no merges _at all_, the graph will be a Y-shaped tree with the contents of each of the left and right box grouped together. I've found the Mercurial equivalent (I don't remember the exact incantation for it, I have an alias for it at work) pretty readable. Sadly, I don't know how to get git to (a) make it obvious what goes in left and right box and (b) not make a huge mess if there are any merges whatsoever.
@robryk happy to hear about any existing tools! the only thing i've heard of so far is git-vee https://www.plover.com/misc/stop-merging/slide019.html