綾小路龍之介の素人思考

[git] revertでpush以降のレポジトリの内容を過去のcommitまで戻す

pushしてしまったら、これはもう公開されたということなので、commitを無かったことにすることは出来ない。そのため、戻したい時点以降のコミットに対応したパッチを生成して新しいcommitを作る(git revertする)ほか無い。

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

リファレンス

  1. git revert - Google 検索
  2. gitリポジトリを特定のcommitバージョンまで戻す方法 - AorBorF
  3. it revert で複数コミットを打ち消す - miauの避難所
  4. Between Winds and Clouds » gitの付き合い方(4)
  5. FAQ/Git – CodeRepos::Share – Trac
  6. gitで一度行った変更をなかったことにする方法4つ - TIM Labs
  7. transitive.info - git revert 使い方
  8. git push revert - Google 検索

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2009-12-29T23:56:44+09:00
  2. Modified: 2009-12-29T23:56:44+09:00
  3. Generated: 2017-05-10T23:09:13+09:00