やってしまったことをなかったことにしたい

人生は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切れって話も・・・
「なかったことにしたい」ようなことをしないのが一番ですよね。