Table of Contents
Git Worktree とは
一つのリポジトリから複数の作業ディレクトリを同時に展開できる Git の機能です。ブランチの切り替えなしに、複数ブランチを並行して作業できます。
Git リポジトリ (.git)
├── メイン worktree … branch: main ./myproject
├── リンク worktree 1 … branch: feature/login ../myproject-login
└── リンク worktree 2 … branch: hotfix/bug123 ../myproject-hotfix
↓ すべて共有
共有オブジェクトストア(コミット履歴・ブロブ・ツリー・タグ)
インストール
Git Worktree は Git 2.5 以降に標準搭載 されているため、別途インストールは不要です。
git --version # 2.5+ であればOK
基本的な使い方
worktree を追加する
# 既存ブランチを別ディレクトリで展開
git worktree add ../myproject-feature feature/login
# 新しいブランチを作りながら追加 (-b オプション)
git worktree add -b hotfix/bug123 ../myproject-hotfix
# デタッチドHEADで特定コミットを展開
git worktree add --detach ../myproject-review abc1234
一覧を確認する
git worktree list
# /home/user/myproject abc1234 [main]
# /home/user/myproject-feature def5678 [feature/login]
# /home/user/myproject-hotfix ghi9012 [hotfix/bug123]
worktree を削除する
# ディレクトリを削除してから登録解除
git worktree remove ../myproject-feature
# 強制削除(変更があっても)
git worktree remove --force ../myproject-feature
# 削除済みディレクトリの参照をクリーンアップ
git worktree prune
代表的なユースケース
| シナリオ | 内容 |
|---|---|
| 並行開発 | feature ブランチを触りながら hotfix も同時に作業 |
| レビュー | 自分の作業を止めずに PR を別ディレクトリでチェック |
| ビルド比較 | main と feature で同時にビルドして差を比較 |
| CI環境 | 単一リポジトリから複数ブランチのビルドを並列実行 |
注意点
- 同じブランチを複数の worktree でチェックアウトすることはできない
.gitディレクトリはメイン worktree にのみ存在し、リンク worktree には.gitファイル(参照)が置かれるgit stashはリポジトリ全体で共有されるので、どの worktree からでもアクセスできる- worktree を削除したあと
git worktree pruneで参照を整理するとよい

コメント