gitリポジトリを特定のcommitバージョンまで戻す方法
git-revertかgit-resetを使う
両者の違いは以下の通り
- git-revert
- ある特定リビジョン(過去にcommitしたバージョン)に戻すパッチを自動生成してコミットする
- git-reset
- ある特定リビジョン(ryに戻す(戻したリビジョン以降を無かったことにする)
もし複数の人共同作業していて共有リポジトリを変更する場合はgit-resetを行うとまれにひどいことになるので極力git-revertを使った方がいいかも
作業の流れ
- git-logでどこまで戻すか決める(あとSHAをコピーする)
% git log commit 46cdec49ae85012327b663531e569d77bf09b1b2 Author: amacou <amacou.abf@gmail.com> Date: Sat Jan 17 22:53:55 2009 +0900 test commit 427855f94fee2d689db33f2f3d433c55f4f110ff Author: amacou <amacou.abf@gmail.com> Date: Sat Jan 17 22:27:29 2009 +0900 add .gitignore commit 49904e11060d12e84a6d0e845513443abfefc912 Author: amacou <amacou.abf@gmail.com> Date: Sat Jan 17 18:20:40 2009 +0900 ......
- git-revert SHA(←git-logで確認時にコピーしたSHA)でリポジトリを戻す(もしくはgit-reset)
%git revert 427855f94fee2d689db33f2f3d433c55f4f110ff Removed .gitignore Finished one revert. Created commit c5f9e83: Revert "add .gitignore" 1 files changed, 0 insertions(+), 8 deletions(-) delete mode 100644 .gitignore %git log commit c5f9e835ecf1955a5128ad7a40fed3b4b841fd9c Author: amacou <amacou.abf@gmail.com> Date: Sat Jan 17 22:54:53 2009 +0900 Revert "add .gitignore" This reverts commit 427855f94fee2d689db33f2f3d433c55f4f110ff. commit 46cdec49ae85012327b663531e569d77bf09b1b2 Author: amacou <amacou.abf@gmail.com> Date: Sat Jan 17 22:53:55 2009 +0900 test commit 427855f94fee2d689db33f2f3d433c55f4f110ff Author: amacou <amacou.abf@gmail.com> Date: Sat Jan 17 22:27:29 2009 +0900 add .gitignore
- git-checkout -fでチェックアウト
% git checkout -f
- git-cleanで余計なファイルを消す
%git clean -f
もしかして・・・
もっと単純でもっと簡単な方法があるかも・・