以下のような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で変更を受けていない部分に関しては状態が保存される。