I ended up in a weird git state. I want to pull from server, only fast forwards.
However, even when there were no changes, git keeps telling me "not possible fast-forward".
$ git pull -v --ff-only
= [up to date] branch -> origin/branch
= [up to date] branch2 -> origin/branch2
= [up to date] branch3 -> origin/branch3
fatal: Not possible to fast-forward, aborting.
This happens when (a) you committed something on that branch earlier, or (b) the history on the remote server changed in a non-standard way (this shouldn't normally happen but repository owners sometimes don't play by the rules).
For the following I'm assuming you're on
foo and the upstream branch is
git log ..origin/footo see what commits are new on the remote side.
git log origin/foo..to see what commits exist on your side that don't exist on the remote side (this will show you any commits that are preventing fast-forwarding).
git reset --hard origin/footo force your branch to become equal to the remote one (this will destroy all uncommitted changes and any commits not contained in
remote/foowill become unreachable).