Git/GitHub

git pushを取り消す2つの方法

  1. git revertでコミットを打ち消す
  2. git resetでコミットをなかったことにする

git revertは対象のコミットを打ち消すためのコミットを行います。コミットログとしては、対象のコミットとそれを打ち消すためのコミットの2つが残ります。過去の履歴を書き換えないので、安全に取り消しが行えます。

git resetは対象のコミットをコミットログから削除します。いわゆる歴史の書き換えですね。コミットログは見やすくなる一方、歴史を書き換えるので、チーム開発をしている場合にコンフリクトが起きる可能性があります。

git revertでコミットを打ち消す

git push origin HEADの意味については、以下記事をご覧ください。
git pushするときは「git push origin HEAD」が便利でおすすめ - Reasonable Code

コマンドのみだとわかりづらいので、実際に試してみます。

git revertはコミットを打ち消すためのコミットを行っていることがわかります。取り消したいコミットもコミットログとして残るので、歴史を書き換えることはありません。このことから、git revertは安全にコミットの取り消しが行える方法といえます。

ただ、不要なコミットが残るので、コミットログが見づらくなります。

git resetでコミットをなかったことにする

コマンドのみだとわかりづらいので、実際に試してみます。

git resetは誤ったコミットをなかったことにしているのがわかります。コミットログから消えているので、歴史を書き換えたことになります。コミットログが綺麗になる一方、チーム開発で他の人が同一ブランチで作業している場合、コンフリクトが起きる可能性もあるので使い方には要注意です。

まとめ

  1. git revertでコミットを打ち消す
  2. git resetでコミットをなかったことにする

参考リンク

-Git/GitHub

© 2020 Reasonable Code