TL;DR

1 つのリポジトリで複数の作業ディレクトリ(ワークツリー)を管理できる Git の機能である。複数のブランチを同時にチェックアウトできる。

なぜ必要か

通常、1 つのリポジトリにワークツリーは 1 つしかない。コードレビューで別のブランチに移るときは、手元の変更を git stash -u で一時的に退避してから git checkout する必要がある。git worktree を使えば、ブランチごとに別のディレクトリを用意できるので、この手間がなくなる。Claude Code を並列に動かすときにも役に立つ。

仕組み

git init や git clone で作られる元のワークツリーを main worktree、git worktree add で追加したものを linked worktree と呼ぶ。linked worktree は、HEAD や index などワークツリー固有のファイル以外をリポジトリ本体と共有する。

例

# ワークツリーを作る
git worktree add <パス> <ブランチ名>
 
# 一覧を表示する
git worktree list
 
# ワークツリーを削除する
git worktree remove <パス>

注意点

同じブランチを複数のワークツリーで同時にチェックアウトすることはできない。また、未コミットの変更や追跡されていないファイルがあるワークツリーは、--force を付けない限り remove できない。ディレクトリを手で消したときは、git worktree prune で管理情報を掃除する。

出典