worktree で Claude を開始する
--worktree または -w を渡して、分離された worktree を作成し、その中で Claude を開始します。デフォルトでは、worktree はリポジトリルートの .claude/worktrees/<value>/ の下に作成され、worktree-<value> という名前の新しいブランチ上に作成されます。
WorktreeCreate フック を設定します。別のターミナルで異なる名前を使用してコマンドを再度実行して、2 番目の分離されたセッションを開始します。
bright-running-fox などの名前を生成します。
EnterWorktree ツールを使用して作成します。Worktree に入ると、Claude は .claude/worktrees/ の下の別の worktree に EnterWorktree をターゲットパスで呼び出すことで直接切り替えることができます。前の worktree はディスク上に変更されずに残ります。
初めてディレクトリで --worktree をインタラクティブに使用する前に、そのディレクトリで claude を 1 回実行してワークスペース信頼ダイアログを受け入れてください。信頼がまだ受け入れられていない場合、--worktree はエラーで終了し、最初にディレクトリで claude を実行するよう求めるプロンプトが表示されます。-p を使用した非インタラクティブ実行は信頼チェックをスキップするため、claude -p --worktree はそれなしで進行します。
ベースブランチを選択する
Worktree はリポジトリのデフォルトブランチorigin/HEAD からブランチするため、リモートと一致するクリーンなツリーから開始します。リモートが設定されていない場合、またはフェッチが失敗した場合、worktree は現在のローカル HEAD にフォールバックします。代わりにローカル HEAD から常にブランチするには、設定 で worktree.baseRef を "head" に設定します。baseRef を "head" に設定すると、新しい worktree はプッシュされていないコミットと機能ブランチの状態を保持します。これは、進行中の作業で動作する必要がある subagent を分離する場合に便利です。この設定は "fresh" または "head" のみを受け入れ、任意の git ref は受け入れません。
# が付いた PR 番号、または完全な GitHub プルリクエスト URL を渡します。Claude Code は origin から pull/<number>/head をフェッチし、.claude/worktrees/pr-<number> に worktree を作成します。
WorktreeCreate フック を設定します。これはデフォルトの git worktree ロジックを完全に置き換えます。
gitignore されたファイルを worktree にコピーする
Worktree は新しいチェックアウトなので、メインリポジトリの.env や .env.local などの追跡されていないファイルは存在しません。Claude が worktree を作成するときに自動的にコピーするには、プロジェクトルートに .worktreeinclude ファイルを追加します。
このファイルは .gitignore 構文を使用します。パターンに一致し、かつ gitignore されているファイルのみがコピーされるため、追跡されているファイルは決して複製されません。
この .worktreeinclude は 2 つの env ファイルと 1 つのシークレット設定を各新しい worktree にコピーします。
.worktreeinclude
--worktree で作成された worktree、subagent worktree、およびデスクトップアプリ の並列セッションに適用されます。
worktree で subagent を分離する
Subagent は独自の worktree で実行できるため、並列編集は競合しません。Claude に「エージェント用に worktree を使用する」と指示するか、カスタム subagent にフロントマターにisolation: worktree を追加して永続的に設定します。各 subagent は一時的な worktree を取得し、subagent が変更なしで完了すると自動的に削除されます。
Subagent worktree は --worktree と同じベースブランチを使用するため、worktree.baseRef が "head" に設定されていない限り、リポジトリのデフォルトブランチから分岐します。
worktree をクリーンアップする
Worktree セッションを終了すると、クリーンアップは変更を加えたかどうかによって異なります。- コミットされていない変更なし、追跡されていないファイルなし、新しいコミットなし: worktree とそのブランチは自動的に削除されます。セッションに名前がある場合、Claude は代わりにプロンプトを表示するため、後で使用するために worktree を保持できます
- コミットされていない変更、追跡されていないファイル、または新しいコミットが存在する: Claude は worktree を保持するか削除するかを求めるプロンプトを表示します。保持するとディレクトリとブランチが保存されるため、後で戻ることができます。削除すると worktree ディレクトリとそのブランチが削除され、すべてのコミットされていない変更、追跡されていないファイル、およびコミットが破棄されます
- 非対話的な実行:
-pと共に--worktreeで作成された worktree は、終了プロンプトがないため自動的にクリーンアップされません。git worktree removeで削除します
cleanupPeriodDays設定より古い場合、コミットされていない変更、追跡されていないファイル、およびプッシュされていないコミットがない場合、自動的に削除されます。--worktree で作成した worktree は、このスイープによって削除されることはありません。
エージェントが実行中の間、Claude は worktree に対して git worktree lock を実行するため、同時実行クリーンアップがそれを削除することはできません。ロックはエージェントが完了すると解放されます。スイープが保持する worktree をクリーンアップするには、git worktree remove を実行し、worktree にコミットされていない変更または追跡されていないファイルがある場合は --force を追加します。
worktree を手動で管理する
Worktree の場所とブランチ設定を完全に制御するには、Git を直接使用して worktree を作成します。これは特定の既存ブランチをチェックアウトするか、worktree をリポジトリの外に配置する必要がある場合に便利です。 新しいブランチに worktree を作成します。非 git バージョン管理
Worktree の分離はデフォルトで git を使用します。SVN、Perforce、Mercurial、またはその他のシステムの場合、WorktreeCreate および WorktreeRemove フック を設定して、カスタム作成およびクリーンアップロジックを提供します。フックはデフォルトの git 動作を置き換えるため、--worktree を使用する場合、.worktreeinclude は処理されません。フックスクリプト内でローカル設定ファイルをコピーしてください。
この WorktreeCreate フックは stdin から worktree 名を読み取り、新しい SVN 作業コピーをチェックアウトし、ディレクトリパスを出力して Claude Code がセッションの作業ディレクトリとして使用できるようにします。
WorktreeRemove フックとペアにします。入力スキーマと削除例については、フックリファレンス を参照してください。
関連項目
Worktree はファイルの分離を処理します。以下の関連ページでは、これらの分離されたチェックアウトに作業を委任し、作成したセッション間を切り替える方法について説明しています。- Subagent: セッション内の分離されたエージェントに作業を委任する
- Agent team: 複数の Claude セッションを自動的に調整する
- セッションを管理する: 会話に名前を付け、再開し、切り替える
- デスクトップ並列セッション: デスクトップアプリの worktree でサポートされるセッション