Force-pushing
What it costs somebody else, and the flag that checks first.
A normal push is refused unless it is a fast-forward, because anything else would remove commits from the remote that somebody may already have.
--force overwrites regardless. If a colleague pushed in between, their commits are no longer referenced on the remote, and unless they still have them locally they are gone.
--force-with-lease does the same thing but only while the remote is still where your remote-tracking branch says it is. If somebody has pushed since you last fetched, it refuses. It costs nothing and removes almost the entire risk.
Commands in this lesson
git push --force-with-lease- Force, but only while the remote is where you last saw it
git push --force- Send commits even if that removes some from the remote