やってしまったことをなかったことにしたい
人生はresetやrevertできないけど、gitなら1行でできるよ!
色々方法があるようなのでメモ。
ごちゃごちゃとやってみたけどダメでしたー!戻したい!でも手動じゃ無理!みたいな時に使いましょう。
ファイルはそのままに、コミット記録だけ消す
hash のコミットまで戻す。ファイルは現在のまま維持。
$git reset --soft
管理下のファイルを指定したコミットまで戻す
ファイルの状態を以前のコミットの状態に戻す。
変更を元に戻したい時。
未コミットでもaddされているファイルは管理下と見なされて消されるので注意。
$git reset --hard
他の人がmergeしちゃったものをなかったことにしてほしいとき
自分が戻すだけだと大変なことになるので、戻れるパッチを作ってあげましょう。
なかったことにするための新しいcommitを作る
$git revert
このフォルダに起こったことをなにもかもなかったことにする
大量にファイル追加しちゃった時 (script/generate scaffold 等)とかに、全部なかったことにしたい。
$git add . $git reset --hard
タイムマシンに乗っちゃうつもりで過去に戻るなら、こうした方がすっきりするかも。
$rm -r * $git checkout
まとめ
不確定なことなら、変更加える前にbranch切れって話も・・・
「なかったことにしたい」ようなことをしないのが一番ですよね。