違うブランチにcommitしちゃったとき

事の発端は作業ブランチを間違えて作業していた。
新しくブランチを切って作業しなくてはならないときにブランチを作成する前に作業を続行していたパターン。
※)この時私はfeature/fuga ブランチを作成して作業したかったのに前回ブランチのfeature/hoge ブランチで作業続行しちゃっていた時のお話

1.まずfeature/hoge ブランチにコミットをあげる
※)checkoutする時にエラーが発生するため

git add -A
# 現在の編集内容をstagingさせる

git commit -m 'commit message'
# コミットする

git log --oneline
# commit message となっていること、かつcommit messageのコミット番号を控えること

2.feature/fugaブランチを作成し、コミットを引っ張ってくる

git checkout develop
# 軸となるブランチに戻る

git checkout -b feature/fuga
# feature/fuga ブランチを作成

git cherry-pick <commit no>
# 1.で取得したcommit no を入力し、cherry-pickで引っ張ってくる

git push origin feature/fuga
# feature/fugaブランチをリモートにpush

3.feature/hogeブランチのコミットを破棄する

git checkout feature/hoge
#feature/hogeブランチにチェックアウト

git log --oneline
#geature/hogeブランチの破棄対象のコミットを探し、破棄対象の一個前のコミットIDを控える

git reset --hard <commit Id>
# <commit id>には先ほどの破棄対象の1個前のコミットIDを入力する

git log --oneline
# 破棄したいコミットログが消えていること

git push origin feature/hoge
# pushできていること

git push -f origin feature/hoge
# リモートにpushしているブランチの修正だと上書きされることもあるので、-fコマンドをつけることで強制的に修正した内容をpushすることができる

errorが発生することなく、feature/fugaブランチにpushができていることの確認が取れれば問題なくcherry-pickすることができている。
今回は作業ブランチの未作成のまま作業を進めていたので最新のcommitを持ってくるだけで済みました。