Coming from mercurial, I use branches to organize features.
Naturally, I want to see this work-flow in my history as well.
I started my new project using git and finished my first feature. When merging the feature, I realized git uses fast-forward, i.e. it applies my changes directly to the master branch if possible and forgets about my branch.
So to think into the future: I’m the only one working on this project. If I use git’s default approach (fast-forward merging), my history would result in one giant master branch.
Nobody knows I used a separate branch for every feature, because in the end I’ll have only that giant master branch. Won’t that look unprofessional?
By this reasoning, I don’t want fast-forward merging and can’t see why it is the default. What’s so good about it?