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