例えばリモートリポジトリにpushした後にうっかり git commit --amend や rebase してcommitのhashが変えてしまった場合は仕方がなくpullするか、git push -f するなどあまりgitの使い方的に良くない状態にしてしまう事をする羽目になってしまうと思います。

このようなケースの時の対処法で例えばgit commit --amendやrebaseを取り消すなどリポジトリを上記のような状態にせずに解決する方法はありますか?