Except that when I work on a feature branch on git, I constantly rebase on top of master to stay up to date and so I don't have to face a huge merge "later" but a few easy merges once in a while.
Except that when I work on a feature branch on git, I constantly rebase on top of master to stay up to date and so I don't have to face a huge merge "later" but a few easy merges once in a while.
The problem comes when two people are developing stuff in two branches that conflicts. When the first merges in, the second now faces the huge painful merge.
No matter which way you slice it, one of the two developers (maybe both) needs to sit down and figure out what the others' changes do and how they interact with his/her own. That's a wetware problem, not something you can fix with a tool.
The more difficult problems come when each worked on it for 2 weeks, then they discover a month or two later that there is a conflict - after both have forgotten what they were doing and why they were doing it.
Furthermore many organizations set up and organize branching in such a way that you have no option to freely define your branch like that. For example in the Microsoft story I linked to there is a multi-level merge process. If you just merge from a random other branch, then multiple merges later when code from your branch is officially merged with the other branch you'll have caused a nightmare because you've got an old and buggy copy of all of the changes in that other branch. The people whose job it is to sort it out will want to kill you. Particularly if you've merged in code that was explicitly discarded from the other branch.