git,コミットするブランチ間違えてしまった時

Gitでブランチをスイッチするのを忘れてしまった時, ここで,correctブランチにコミットしなければならない内容をwrongブランチにコミットしてしまった状況について考えます.

まずwrongブランチにて

 $ git switch wrong
 $ git log --oneline --graph
* 4c4c0f2d1 (HEAD -> wrong) 間違えたコミット
*   baffo8392 Merge pull request #111 from somewhere
|\  
| * 29dca5571 Fix something

ここで,git log --oneline --graphにてログが表示されます.間違えてしまったコミットのID(4c4c0f2d1)をコピーしておいて,本来コミットすべきだったcorrectブランチに引っ張ってきます.

 $ git switch correct
 $ git cherry-pick 4c4c0f2d1

cherry-pickに先程コピーしておいたコミットIDを渡せばコミットが引っ張って来れると思います.

 $ git cherry-pich fromID..toID

と言うように2つのピリオドを挟んでコミットIDを指定することで,その区間のコミットをまるごと引っ張ってこれたりもします. 後はもう一度wrongブランチに戻って間違ってしまったコミットの前のIDを指定してresetすることで,間違えてしまったPushも取り消すことができます

 $ git switch wrong
 $ git reset --hard baffo8392

以上です.