Follow twitter

Git revert 過去のコミット 打ち消し

今回はGitのrevertについて述べます。過去のコミットを打ち消すコミットとして
revertコミットを実行します。

revertコミットで過去のコミットを打ち消す

過去のコミットを消すための方法として、revertコミットがあります。

これは、消すというより、打ち消すと言う意味です。
つまり、過去のコミット内容をなかった事にするためのコミットを実行します。メリットとしては過去の履歴を残せておける点が挙げられます。

下図のイメージです。

コマンド方法は以下の通りです。

$ git revert <打ち消したいコミットID>

コミットIDはgit logコマンドで確認できます。

$ git log

複数のコミットをまとめて打ち消す

複数のコミットをまとめて打ち消す場合、 -nのオプションを使用する方法もあります。

-nオプションは打ち消すrevertとコミットを実行手前で止めておくオプションです。

つまり、打ち消すコミットをステージングの状態で保持しておくことができます。
よって、複数のコミットを打ち消したい場合、-nオプションをつけて
一度ステージングにまとめておき、その後コミットを実行することができます。

$ git revert -n <打ち消したいコミットID①>
$ git revert -n <打ち消したいコミットID②>
$ git revert -n <打ち消したいコミットID③>
・
・
・
$ git commit

この方法を使うとrevert commitを1つにまとめることができます。

マージコミットを打ち消す

ブランチをマージする際に新たなコミットが作成されます。
詳細はこちら参照。
そのコミットを打ち消す場合を紹介します。

$ git revert -m <ブランチ選定ナンバ1or2> <打ち消したいマージコミット>

まず、-mのオプションを付ける必要があります。

ブランチ選定ナンバは1か2を選定します。
これはマージコミットを打ち消すと、マージ前に戻りますので、
戻り先のブランチを選定する必要があります。
1はマージされた側、2はマージする側のブランチに戻るという意味です。

下図の場合、コミットJがマージコミットでこれを打ち消したいとします。
masterブランチが1、bugfixブランチが2となります。
revert後、masterブランチに戻るとすると以下コマンドを入力します。

$ git revert -m 1 <コミットJのID>

revertを取り消すには–abortオプション

revertを取り消したいときには–abortオプションを使用します。

$ git revert --abort

終わりに

commitを実施する上で、間違えや、取り消したいときは
revertを使うと良いと思います。履歴を消し去ることなく残せておけるので
後から振り返るときに役立つと思います。

Have a nice Git life!