Git を1からやり直す(revert編)

Gitを1からやり直す(目次)

revert

revert は「戻る、復帰する」という意味。変更を打ち消すコミットを作る。

コマンド 動作など
git revert コミット 指定したコミットの変更を打ち消すためのコミットを作る
git revert --abort コンフリクト発生時、revert を中止して元に戻す
git revert --continue コンフリクト発生時、コンフリクト解消 → add → continue で revert を続ける

リセットとの比較

# 実行前
master  A - B - C - D (masterの先端)

# reset 後
master  A - B - C (masterの先端)

# revert 後
master  A - B - C - D - D' (masterの先端)

D'時点のファイル群の中身はCと同じだが、コミット履歴に残るか残らないかという点が異なる。

実際にやってみる。master ブランチが以下のようになっていたとする。

$ git log --oneline
35bcb66 (HEAD -> master) D - 4th commit
dd4494d C - 3rd commit
6957731 B - 2nd commit
74eeb1f A - initial commit

1) reset の場合

単純に35bcb66 D - 4th commitのコミットがなくなる。

$ git reset --hard HEAD^
HEAD is now at dd4494d C - 3rd commit

$ git log --oneline
dd4494d (HEAD -> master) C - 3rd commit
6957731 B - 2nd commit
74eeb1f A - initial commit

2) revert の場合

33e18be (HEAD -> master) Revert "D - 4th commit"という新たなコミットが作られる。

$ git revert HEAD
[master 33e18be] Revert "D - 4th commit"
 1 file changed, 1 deletion(-)

$ git log --oneline
33e18be (HEAD -> master) Revert "D - 4th commit"
35bcb66 D - 4th commit
dd4494d C - 3rd commit
6957731 B - 2nd commit
74eeb1f A - initial commit

(参考資料)わかる Git