GitHubで誤ってコミットした際の対処方法について・・・
状況ごとに整理してみます。
リモートのpushを一つだけ戻したい場合###
1. 強制的に削除する方法(git reset)####
内容は変更せずにコミットだけ取り消す方法
$ git reset --soft HEAD^
内容を前の状態にし、さらにコミットも削除する方法
$ git reset --hard HEAD^
ターミナル上で上記のどちらかを行ったあと、
$ git push -f origin HEAD^:ブランチ名
もしくは、
$ git push -f origin HEAD~1:ブランチ名
(ちなみにHEADの後の^を2つ付けると2つ前に戻れる。HEAD~2としても同様)
を行う。
この方法だと誤ったコミット自体がなかった事になります。
メリット:誤ったコミットを削除出来るので履歴が見やすい
デメリット:チーム開発の場合、他の人が同じブランチで作業していた場合だと、コンフリクトがおきたり、エラー発生の原因になりうる可能性があります。
別の方法として、
リモートのpushを一つだけ戻したい場合(git revert)###
コミットした内容を打ち消すコミットを出来るようにする。
$ git revert HEAD
すると間違えた内容のコミットを再度編集出来るようになる。(正確には、もう一度前回のコミットと同じ内容のコミットが出来るようになるので、正しい内容に編集して再コミットする。)
そして、再プッシュ
$ git push origin master
この方法は、削除ではなく、前回内容をコミットして上書きする方法です。
メリット:誤った履歴は残るので、チーム開発で同じブランチで作業している人がいても影響がない。削除をしないので、安全にコミットを元に戻せる。
デメリット:誤った履歴が残るので少し見づらくなる。
なので、個人で開発する場合は、git reset、チームで開発する場合、git revertと使い分けるのが良いと思います。