質問: 例えばリモートリポジトリにpushした後にうっかり git commit --amend や rebase してcommitのhashが変えてしまった場合は仕方がなくpullするか、git push -f するなどあまりgitの使い方的に良くない状態にしてしまう事をする羽目になってしまうと思います。 このようなケースの時の対処法で例えばgit commit --amendやrebaseを取り消すなどリポジトリを上記のような状態にせずに解決する方法はありますか?
回答: git commit --amend や rebase を取り消してしまって良いのであれば、例えば `git reset --hard origin/master` のように resetコマンド を使って現在のブランチをリモートレポジトリのmasterに戻してしまえば commit --amend, rebase はなかったことになります。 もし手元で行っているまだコミットしていない変更を失いたくないということであれば、`--soft` あるいは `--mixed` でワーキングツリーを維持しつつ `HEAD` を `origin/master` に戻してからコミットすればよいかと思います。もし、`push` の後に行った `rebase` (`commit --amend`) よりも前のコミットを失いたくないということであれば、 `git reset --hard ORIG_HEAD` で `rebase` の直前のコミットの状態に戻ることもできます。