I've seen the scenarios you describe arise, and in every case it's been a matter of people pushing buttons and hoping for the best. I have never seen a case where people intended to flip-flop between versions and then got hung up because the merge didn't do what they expected and they couldn't clearly and simply say "y'know what, screw B, I want A to 'win'.".
You either know what you expect to happen to the code when you do a merge, or you do not. If you know what you expect, git provides plenty of tools to help you ensure that you get what you expect. If you don't actually know what to expect and are blindly hoping for the best -- then you have no clear sense of your codebase, or the changes being made by others (either the mechanics or the intent).