What will happen if I use git pull --rebase ?
git pull --rebase is roughly equivalent to
git fetch
git rebase origin/master
i.e. your remote changes (C) will be applied before the local changes (D), resulting in the following tree
A -- B -- C -- D
What will happen if I use git pull --ff-only ?
It will fail.
git pull --ff-only corresponds to
git fetch
git merge --ff-only origin/master
--ff-only applies the remote changes only if they can be fast-forwarded. From the man:
Refuse to merge and exit with a non-zero status unless the current HEAD is already up-to-date or the merge can be resolved as a fast-forward
Since your local and remote branches have diverged, they cannot be resolved by a fast-forward and git pull --ff-only would fail.