履歴自体をなかったことにする方法
前回、GitHub DesktopでPushを取り消す-その1-Revert編
でRevertして再度PushすることによりPushを取り消しましたが、Push自体をなかった事にする方法があります。
この方法はPushした後に別のユーザーがPullしたときなど不具合が生じるので、状況を見極めて使用してください。
通常は GitHub DesktopでPushを取り消す-その1-Revert編で対応するのが望ましいと思います。
現在の状態
ローカルに1~3のコミットがあります。
GitHubにも1~3のコミットがPush済みです。
今回はコミット2~3を取り消してコミット1だけの状態としていきます。
ローカルをResetする
コミット1を右クリックして”Copy SHA”を選択します。
次に[Repository]メニューの[Open in Command Prompt]を選択します。
するとコマンドプロンプトが開くので、そこに下記のコマンドを入力します。
xxxxxの部分は先ほどコピーしたSHAをペーストしてください。
git reset --hard xxxxx
コミット2・3がなくなってコミット1の状態となりました。
リモートにPushする
[Repository]メニューの[Open in Command Prompt]を選択します。
するとコマンドプロンプトが開くので、そこに下記のコマンドを入力してPushします。
“-f”は強制的にPushする意味です。これがないとPushはエラーとなります。
git push -f origin master
コミット2・3がなくなりコミット1の状態となりました。