Gitで間違ったブランチにcommitしてしまった場合にコミットを別ブランチに移す方法

最近手元でやらかしてしまった失敗のリカバリー方法のメモです。

要するに、ブランチを切ってコミットするべきだったのにmainブランチにコミットしてしまった状態からリカバリーする手順になります。

注意点として、Github等のリモートのリポジトリにプッシュする前であれば使える方法です。もしプッシュしてしまっていたら他の人の環境に影響することがあるので正直にリバートしましょう。

さて、本題に戻ります。コミットするブランチを間違えて幸いpushする前に気付けたら次の手順で修正できます。

1. 新しいブランチ(本来コミットしたいブランチ)を作成して切り替える

% git checkout -b {新ブランチ}

2.mainブランチ(間違ってコミットしたブランチ)に戻る

% git checkout main

3.最後のコミットを取り消す

% git reset --hard HEAD~1

これで、mainブランチの間違ったコミットが消えます。

一方で、新たに作ったブランチはその最後のコミットが残っているので、実質的にコミットがブランチを移動したことになりました。

あとはその正しくコミットしたブランチに戻って修正作業を続けるなり、リモートリポジトリにプッシュするなりしたら良いです。