備忘録。モノリポで、あるブランチで作業中に別ブランチで開発した他のアプリケーションを立ち上げてローカルで結合したい。そんなときに git worktree
が使えそう。
$ git worktree list /Users/kntmr/workspace/repo e562a08b4f7 [feature/service-a] # 指定したパスにそれぞれのブランチが checkout される # checkout したブランチは独立しているため、作業中の worktree に影響を与えない $ git worktree add ~/workspace/worktrees/feature/service-b feature/service-b $ git worktree add ~/workspace/worktrees/feature/service-c feature/service-c $ git worktree list /Users/kntmr/workspace/repo e562a08b4f7 [feature/service-a] /Users/kntmr/workspace/worktrees/feature/service-b f3ce5c04f3c [feature/service-b] /Users/kntmr/workspace/worktrees/feature/service-c d017566d700 [feature/service-c] # worktree を削除する $ git worktree remove ~/workspace/worktrees/feature/service-b $ git worktree remove ~/workspace/worktrees/feature/service-c
別ディレクトリを作成して丸ごと clone, checkout する感じ。ローカルリポジトリからコピーしているっぽいのでそこまで時間はかからない。ちょっと別ブランチを作成して hotfix を commit したいみたいなときは stash で十分かもだけど、複数のブランチで同時に作業したいときには git worktree が便利そう。
前提
$ git --version git version 2.29.2