Sometimes forced push can cause some serious issues to other contributor's work. So here's a solution without force push.
First, put your new commits in a dedicated branch
Then, reset your master on origin/master
Now all you need to do is merge your dedicated branch to master, always keeping commits from the dedicated branch (meaning creating new revisions on top of master which will mirror your dedicated branch).
This way you would be able to push master to remote without having to force anything.