Use case: The work is finished on the feature branch and needs to be checked into the development branch.
Default: Git performs a fast-forward merge by default.
Result: A fast forward clutters the development branch and loses the overview on the work done in the feature branch.
Advise: The –no-ff flag causes the merge to always create a new commit object, even if the merge could be performed with a fast-forward. This groups all historical commits that belong to a feature branch and keeps the development branch clean.
More info at: