Is there a way to have git always merge without a fast-forward, except for when pulling?
Following a nice git-flow, I like keeping my branch history (easier to remove features, etc later on), so I have set my config to never fast-forward when merging, like so:
git config --global merge.ff false
However, whenever I update my current branch/pull from the remote, it creates a merge commit… which is really gross, especially for forking other projects on GitHub.
Is there anyway to make a git pull always fast-forward?
Unfortunately, I tried doing:
git pull --ff-only upstream master
… only to watch it spit out an error:
fatal: You cannot combine --no-ff with --ff-only.
I’m really tired of seeing this:

You can try this:
This will rebase your commits on top of upstream commits.
Here is an illustration of what it does.
Your local repository:
Upstream repository:
After
git pull --rebase upstream master: