あまり頭を使わずに
$git reset --hard commitID
とかやると例えば、コミットをプッシュするリモートを間違えちゃったからプッシュ先だけ変えなきゃ、
というときにコミットそのものをなくしてしまうという愚かしい行為に及んでしまうことがあります。
こんな愚かな行為もやり直しのチャンスを与えてくれる優しさがGitにはあります。
取り消したコミットまで覚えてくれているのです。
$git reflog
で消え去ったコミットも含めたログを出します。こんな感じ
01eb023 HEAD@{0}: reset: moving to HEAD^^ ba3a1ac HEAD@{1}: commit: hogehoge3 ba3a1ac HEAD@{2}: commit: hogehoge2 ba3a1ac HEAD@{3}: commit: hogehoge1 01eb023 HEAD@{4}: checkout: moving from master to features/hogehoge ...
hogehoge3のコミットに戻しましょう
$git reset --hard "HEAD@{1}"
戻すときもresetです。引数のとり方に注意が必要です。
あらためてGitの凄さを痛感しました。。