Sometimes I look at the memes around here and wonder wtf y'all are doing. Like, neither my code nor the code at the place I work at are perfect. But I don't think I've ever seen a merge do this. Maybe some of the most diverged merges temporarily had a lot of errors because of some refactoring, but then it was just a few find + replaces away from being fixed again. But those were merges where multiple teams had been working on both the original and the fork for years and even then it was usually pretty okay.
It's really easy to make a gigantic mess using git if you don't know what you're doing. As soon as you learn to keep your history mostly linear all those issues go away.