git push "-f" switch uses --force-with-lease instead of --force

This is a much safer operation that will only force-push if the remote
ref on the server matches what you think it is (according to your
remote-tracking branch). It avoids race conditions where somebody else
pushed to the branch since you last pulled. I really wish that the git
command-line interface made "--force-with-lease" the default behaviour
for "--force", but if not the CLI then at least magit can do the right
thing. :-)

Note that "--force-with-lease" was introduced in git 1.8.5, which was
released in November 2013. This won't work with older versions of git.

This doesn't support using the version of "--force-with-lease" that
takes parameters, but I haven't personally found a need for that.

If you want the old "--force" behaviour you'll have to use the command
line, or just do a fetch first.