I know how to solve this:
user@host$ git pull
Updating 9386059..6e3ffde
error: Your local changes to the following files would be overwritten by merge:
f
With Git 2.6+ you can use the following:
alias gup='git -c rebase.autoStash=true pull --rebase'
This --rebase makes git-pull use rebase instead of merge, so settings/options like --ff-only won't apply.
I am using an alias to pull with --ff-only by default (git pull --ff-only), and can then use gup (from above) in case a fast-forward merge is not possible or there are stashed changes.