このエントリーはGitアドベントカレンダーの15日目です。
今回紹介するコマンドは、基本的には反則技と言われる事が多いです。一人プロジェクトにおいて自己責任で利用するコマンドと考えた方が良いと思います。複数人で管理しているプロジェクトで実行すると、色々困った事になる事が多いです。私は、一人プロジェクトにおいてremote reposigitoryをbackupとして位置づけている場合に利用する事が有ります。
git commitしたあとに直前のメッセージの変更やcommit内容の変更を修正する際には git commit --amend をします。
もっと過去の歴史を書き換えたい場合はgit rebase -iというコマンドで書き換える事が可能です。
しかし、すでにgit pushした後に上記のようにcommit内容を修正してもremoteとlocaleのrepositoryに不整合が生じてしまうのでgit push時にエラーとなります。
その際には、
git push -f origin master
する事で、強制的にpushする事が出来ます。ただし、複数人での作業時に、git push時にエラーが発生するからとりあえずgit push -fとすることは絶対に避けましょう。
その他のシーンでgit push -fを利用する事例が、Heroku Dev CenterのDeploying with Gitに記載されています。