あ、別のブランチで作業してしまった!時の対処法
はじめに
Gitを使って開発をしていると、時々「あ、ブランチ変えるの忘れてた」という状況に遭遇することがあります。
そういった時にどう対処すればいいのか、具体的な手順を共有します。
問題の設定
例えば、main
ブランチで作業している最中に、実はこれ新機能用のブランチで行うべきだと気づいたとします。
まだコミットはしていないので、どうにかしてこれを新しいブランチに移したい。そんな時は以下の手順で対処できます。
想定ケース
Your branch is up to date with 'origin/main'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: config/database.yml Untracked files: (use "git add <file>..." to include in what will be committed) Dockerfile docker-compose.yml no changes added to commit (use "git add" and/or "git commit -a")
このような状況で、config/database.yml
が変更され、Dockerfile
とdocker-compose.yml
が新規に作成されているとします。
対処法
ステップ1: すべての変更をステージングエリアに追加
このステップはオプションですが、全ての変更をステージングエリアに追加することで後のステップが少し簡単になります。
git add .
ステップ2: 変更を退避(stash)
git stash
コマンドを使って現在の変更を退避させます。
git stash
ステップ3: 新しいブランチを作成して切り替える
git checkout -b <新しいブランチ名>
で新しいブランチを作成して切り替えます。
git checkout -b new-feature-branch
ステップ4: 変更を適用
git stash apply
で退避させた変更を新しいブランチに適用します。
git stash apply
ステップ5: 変更をコミット
git commit -m "コミットメッセージ"
で変更を新しいブランチにコミットします。
git commit -m "Add Docker support"
ステップ6: 新しいブランチにプッシュ
git push origin new-feature-branch
で新しいブランチをリモートリポジトリにプッシュします。
git push origin new-feature-branch
まとめ
以上が「あ、これ別のブランチでやるべきだった」と気づいた時の対処法です。
この手順によって、誤って作業してしまったブランチから正しいブランチへと作業を移行することができます。