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
以上です.