これはなに

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

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

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