概要
皆さんはコミットしてpushした後に作業ブランチが間違っていることに気づいたことはないでしょうか?(僕はよくこのポカミスをよくします)
そんな時の対処法を備忘録として残しておきます。
私はプログラミング初学者のため間違った記述があれば教えていただけると幸いです。
今回は個人開発ですが、--force オプションを使用してpushする場合は注意が必要です。他の人とブランチを共有している場合、この操作は他の人の作業を上書きする可能性があるので共同作業者と事前に相談してください。
状況
個人開発の際、routes_setupブランチで作業していると思い、コミットしpush
しPull request
した際、ボタンが出てこず確認してみるとtop_pageブランチで作業してしまっていました。
対処法
ローカルで正しいブランチにコミットを移動する
まず、現在のブランチでの変更を確認しコミットハッシュをメモします。
git log
正しいブランチ(routes_setup)にチェックアウトします。
git checkout routes_setup
routes_setup ブランチにコミットを適用します。
git cherry-pick [コミットハッシュ]
誤ったブランチのコミットを取り消す
誤ったブランチにチェックアウトします。
git checkout top_page
最後のコミットを取り消します。
git reset --hard HEAD~1
変更をリモートに反映する
git push origin top_page --force
正しいブランチの変更をリモートにpushします。
git checkout routes_setup
git push origin routes_setup
この手順で、誤ったブランチのコミットを正しいブランチに移動し、誤ったブランチのコミットを取り消し、リモートの状態を修正することができます。