【Git】GitHubやBitbucketにpushしたcommitの削除方法。

メモ。

※自己責任で。

リモート上とローカルが同じ状態であることが前提。
また手順でコミットを消すと、そこで追加したファイルは削除されるので後で手で戻す必要がある。

まずリモート上のhistoryを遡って取得する。

例)4個遡る

git rebase -i HEAD~4

下記のようにpick行が表示される。

pick 6f6e387 modify
pick abc7e07 modify
pick c7fd962 modify
pick 76a95b7 modfiy

# Rebase 27fda5c..76a95b7 onto 27fda5c
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#

消したいコミットの行を削除後、保存して閉じる
※全部削除してしまうとキャンセルとみなされてしまうため1行は残すこと。

下記のメッセージが表示されれば成功

Successfully rebased and updated refs/heads/master.

下記コマンドで消えていることを確認。

git log

リモートにpushする。

git push origin +master

以上で完了。

pickを削除して保存した際、Successにならなかった場合の手順は下記URLを参照されたし。

http://pandazx.hatenablog.com/entry/2012/10/14/005716