以下のようなcommit logが有ったとする。
$ git log commit 4444444444444444444444444444444444444444 Author: ***** <*****@********************> Date: Fri May 27 21:25:28 2011 +0900 test 4 commit 3333333333333333333333333333333333333333 Author: ***** <*****@********************> Date: Fri May 27 20:11:41 2011 +0900 test 3 commit 2222222222222222222222222222222222222222 Author: ***** <*****@********************> Date: Fri May 27 20:03:20 2011 +0900 test 2 commit 1111111111111111111111111111111111111111 Author: ***** <*****@********************> Date: Fri May 27 19:45:31 2011 +0900 test 1
これをtest 2がcommitされた時点の状態に戻すには、test 2のコミット以降に行われた変更(test 3とtest 4)を元に戻すパッチを生成してcommitすればよい。これを行うコマンドはgit revertで、引数にパッチを生成したいコミットのcommit idを与える。
$ git revert 4444444444444444444444444444444444444444 $ git revert 3333333333333333333333333333333333333333
git revertではパッチを生成してcommitするだけなので、test 3とtest 4で変更を受けていない部分に関しては状態が保存される。