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