У тебя локальные изменения, которые конфликтуют с удалёнными. Нужно их либо закоммитить(тогда при git pull нужно будет разрулить конфликт), либо убрать вообще, например застешить.
git pull работает правильно, не надо его заставлять.
Вообще можно обойтись и без форс-пуша. Конечно, это будет не удаление, но зато более безопасно
git revert (вроде бы git revert HEAD~1 тоже должно сработать). И потом просто push.
git checkout --orphan имя-новой-ветки-без-истории
Ветка создаётся чистая, следующий коммит будет как будто первоначальным. git-scm.com/docs/git-checkout