Difference between git pull --rebase and git pull --ff-only
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.