Let's say origin/master
has commit A--B--C
and my local/master
has commit A--B--D
.
What will happen if I use git pull --rebase
?
What will happen if I use git pull --ff-only
?
Is there any difference in the resulting commit tree ?
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.