when they are on one branch they come into conflict. it's easy to exclude this possibility by making branches tied to a key, but merge conflicts require human intervention.
it's not the same as forks in a blockchain where you can just pick the smaller hash. there is usually tens if not thousands of changes in a commit, and it would be highly impractical to have code rearrange itself as you work on it. it's good that i bumped into this subject because the project i am helping bring to fruition needed some protection from concurrency and they devised some good solutions.