これはなに

間違ってmainブランチにコミットしてしまった場合に、それを別のブランチへ移す方法のメモ。
注意

この方法だと履歴を書き換えることになるので、pushしてしまった後だと、push --forceが必要になってしまう。他者に影響が出るので、注意が必要である。
方法

mainブランチから新しいブランチを作成する
git switch -c new-branchmainブランチにいることを確認する
git branchmainブランチにいる場合は、以下のように表示される。
$ git branch
* main
new-branchmainブランチにいない場合は、以下のコマンドで切り替える。
git switch mainmainブランチをリセットする範囲を確認する
git log --oneline例えば、次のように表示される。
$ git log --oneline
abcdef3 (HEAD -> main) コミット3
abcdef2 コミット2
abcdef1 コミット1- (省略可)安全のため、現在の状態をタグとして保存する
git tag backup-before-resetこれにより、なにか問題が生じたときに、タグを使って簡単にワークツリーを復元できる。
git checkout backup-before-resetmainブランチのHEADも戻したい場合は、以下を実行する。
git reset --hard backup-before-resetmainブランチをリセットする
例えば、コミット1の状態に戻したい場合、以下を実行する。
git reset --hard abcdef1- 別ブランチに切り替えてで作業を続ける
git switch new-branch