Git Worktreeで複数ブランチを同時に作業する方法

新人向けに Git worktree の説明をする機会があったのでメモ。
Git worktree ってなに?
通常、1つの Git リポジトリは 1つの作業ディレクトリ(ワーキングツリー) しか持てません。 あるブランチを確認したいとき、今の作業を stash したり commit したりしてからブランチを切り替える必要があります。
Git worktree は、1つのリポジトリから 複数の作業ディレクトリを同時に展開 できる機能です。
リポジトリ(.git)
├── /project ← メイン(main ブランチ)
├── /project-feature-a ← worktree(feature/a ブランチ)
└── /project-hotfix ← worktree(hotfix/xxx ブランチ)それぞれのディレクトリが 独立したブランチ を持ち、同時並行で作業できます。
.git の履歴・設定は共有されるため、クローンを複数作るより軽量です。
どんな時に使えるの?
1. 作業中に割り込みが入ったとき
機能開発の途中でバグ修正の依頼が来た場合、stash や中途コミットなしに別ディレクトリで即座に対応できます。
2. ブランチを並行して確認・比較したい
main の動作を確認しながら feature ブランチを開発する、といった作業が1台のマシンで同時にできます。
3. CI / テストを並列実行したい
テストや重いビルドを走らせながら、別のブランチで開発を継続できます。
