Build This Now
Build This Now
クロード・コードとは何か?Claude Code のインストールClaude Code ネイティブインストーラーClaude Code で最初のプロジェクトを作る
Claude Code ベストプラクティスClaude Opus 4.7 ベストプラクティスVPS上でのClaude CodeGit 統合Claude Code レビューClaude Code WorktreesClaude CodeリモートコントロールClaude Code ChannelsClaude Code スケジュールタスクClaude Code権限管理Claude Code オートモードフィードバックループTodoワークフローClaude Code タスク管理プロジェクトテンプレートClaude Code の料金とトークン使用量
speedy_devvkoen_salo
Blog/Handbook/Workflow/Claude Code Worktrees

Claude Code Worktrees

--worktreeフラグ、自動命名ブランチ、デスクトップの並行セッション、サブエージェントの分離、そしてGitを使わないチームでもClaude Codeを安全に実行できるフックのパターンを解説。

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。

Published Jan 22, 2026Handbook hubWorkflow index

問題: フィーチャーブランチでClaude Codeセッションが順調に進んでいるとき、本番のバグが舞い込んでくる。選択肢はどれも悪い。作業中の状態を失ってスタッシュするか、2つ目のターミナルを開いて2つのセッションが同じファイルを取り合うのを見るか、セッションを完全に中断するか。

素早い解決策: 独自のworktreeの中に2つ目のClaude Codeセッションを開く:

claude --worktree bugfix-123

新しい作業ディレクトリが.claude/worktrees/bugfix-123/に、専用のブランチworktree-bugfix-123として作成される。最初のセッションはそのまま。何もスタッシュされない。衝突もない。2つのClaude Codeセッションが並行して動き、お互いの存在を知らない。

エージェントのパターンを選ぶ場合、境界をシンプルに保つこと。1つのセッション内でサブエージェント、スラッシュコマンド、軽量な特化が必要ならAgent Fundamentalsを読む。ファイルシステムの分離、別々のブランチ、同じチェックアウトに触れてはいけない並行作業が実際の問題であれば本ページを読む。その分離の上でのオーケストレーションの形についてはAgent Patternsを読む。

Worktreesが変えること

サブエージェントやバックグラウンドエージェントを使ってClaude Codeを追い込んだことがある人なら、天井にぶつかったことがある。2つのエージェントが同時に同じファイルを編集し始める。一方がsrc/auth.tsを書き換えている間、もう一方が同じモジュールの途中にいる。戻ってくるのは半分だけ適用された変更、マージの混乱、あるいはそれ以上のひどい状態だ。

Worktreesはこれをファイルシステムレベルで解決する。それぞれが独自のブランチ、ディレクトリ、インデックスを持つリポジトリの別々のチェックアウトだ。Worktreeのサポートは Claude Code v2.1.50でファーストクラスとなり、CLIからDesktopアプリ、カスタムエージェントまで、作成、管理、削除をカバーしている。

CLI: --worktreeフラグ

--worktreeフラグ付きでClaude Codeを起動するのが最速の入り口だ。

名前付きworktree

# 名前付きworktreeでClaudeを起動
claude --worktree feature-auth
 
# 作成されるもの:
# .claude/worktrees/feature-auth/  (作業ディレクトリ)
# Branch: worktree-feature-auth    (デフォルトのリモートブランチから分岐)

すべてのworktreeは.claude/worktrees/以下の専用フォルダに、専用ブランチとともに配置される。ディスクが許す限りいくつでも起動できる。

自動命名worktree

# Claudeに名前を生成させる
claude --worktree

ブランチ名が重要でない使い捨ての実行に便利だ。

複数の並行セッション

# ターミナル1: 認証機能の作業
claude --worktree feature-auth
 
# ターミナル2: バグの修正
claude --worktree bugfix-123
 
# ターミナル3: リファクタリングの探索
claude --worktree experiment-new-router

3つのセッション。3つのブランチ。衝突ゼロ。各セッションはgitの全履歴を参照できるが、各セッション配下のファイルはそれぞれのtreeに存在する。

セッション途中でのworktree作成

起動時にフラグは必須ではない。実行中のセッション内で依頼できる:

You: work in a worktree
Claude: I'll create an isolated worktree for this session...

Claudeがworktreeをセットアップし、セッションをそこに移動する。会話の途中で、最初から作業を分離しておくべきだったと気づいたときに助かる。

デスクトップアプリ: 自動分離

Claude Code デスクトップアプリはさらに一歩進んでいる。すべての新しいセッションがデフォルトで独自のworktreeを持つ。

デフォルトでは、それらのworktreeは.claude/worktrees/に作成される。デスクトップの設定でパスを変更したり、Claudeが作成したブランチをグループ化するためのブランチプレフィックスを設定したりできる。セッションが終わったら、アーカイブアイコンをクリックするとworktreeとそのブランチが削除される。

つまりすべてのデスクトップセッションはデフォルトで安全だ。セッションは互いに上書きしないし、調整する必要もない。

サブエージェントのworktree分離

これがこの機能の真価だ。Claude が分散タスクのために生成する各サブエージェントは、独自のworktreeを持てる。

Claudeにエージェントを分離するよう依頼する

最も簡単な方法:

You: Use worktrees for your agents when doing this refactor

すべてのサブエージェントが独自のworktreeに配置される。編集なしで終了したworktreeは自動的に削除される。実際に変更を加えたworktreeはレビューのために残る。

並行実行で重要な理由

分離なしでは、並行サブエージェントはファイルを読み取るか、重複しないパス内に書き込むことしかできない。それは弱い境界だ。1つのエージェントが別のエージェントのレーンに入り込んだ瞬間、サイレントな衝突が発生する。

分離があれば、各エージェントはコードベース全体を単独で見られる。エージェントAがsrc/auth.tsをある方法で試みる一方、エージェントBが同じファイルを別の方法で試みることができる。両方のブランチを確認して、より良い方を選ぶ(あるいは両方のピースを組み合わせる)。

これはバッチマイグレーションで本当に輝く。1つのAPIから別のAPIに50ファイルを移行したいとする。5つのエージェントを起動し、それぞれ10ファイルを担当させ、すべて独自のworktreeで作業させる。並行して作業し、誰も邪魔されない。組み込みの/batchコマンドもこれと同じレールを使い、1つのプロンプトからworktreeで分離されたエージェントを起動してコードベース全体のマイグレーションを実行する。

分離を内蔵したカスタムエージェント

.claude/agents/以下のカスタムエージェントは、常にworktreeを使うようにピン留めできる:

---
name: refactor-agent
description: Agent that performs isolated refactoring work
isolation: worktree
---
You are a refactoring specialist. Analyze the target code,
plan the refactor, and implement changes.

フロントマターのisolation: worktreeはClaudeにこのエージェントが実行されるたびに新しいworktreeを作成するよう指示する。エージェントは完全な分離で作業し、実行終了時に空のworktreeは自動的に削除される。

Git以外のバージョン管理システムのサポート

Mercurial、Perforce、SVNを使うチームも締め出されない。Worktreeモードはカスタムフックを使って動作する。設定にWorktreeCreateとWorktreeRemoveフックを登録すると、VCS固有の分離ロジックがデフォルトのgitの動作を置き換える。

これらのフックが設定されると、--worktreeフラグとセッション内のworktreeリクエストはgitを呼び出す代わりにフックを通じてルーティングされる。フロー全体のその他の部分は変わらない。

盗む価値のある3つのWorktreeパターン

基本的なアイデアは一度見ればほとんどのチームが理解できる。通常その次に必要なのは、コピーできる動作するパターンだ。

1. フィーチャー作業を壊さずにホットフィックス

フィーチャーブランチの途中にいるとき、本番の認証バグが舞い込んでくる。

# 現在のフィーチャーセッションを生かし続ける
claude

# 2つ目の分離されたバグフィックスセッションを開く
claude --worktree hotfix-auth-timeout

これでホットフィックスはクリーンにリリースでき、フィーチャーセッションはその状態、todo、会話履歴を保持し続ける。これはworktreeの最もシンプルで価値の高い使い方であり、ほとんどのチームが最初に採用するものだ。

2. リスクのあるリファクタリングの競合実装

あるルーティングのリファクタリングに2つの可能な形があるとする。一方は現在のAPIサーフェスを保ちながら内部を移動する。もう一方は外部APIも単純化する。

両方を実行する:

claude --worktree router-safe-path
claude --worktree router-clean-slate

両方のセッションは同じファイルに触れられる。チェックアウトを共有していないからだ。後で両方のブランチをレビューして、より優れたデザインを採用する。これは1つのコンテキスト内で1つのエージェントに両方のパスを推論させようとするよりはるかに優れている。

3. 分離されたサブエージェントによるバッチマイグレーション

1つのロギングAPIを80ファイルで置き換える必要があるとする。5つのエージェントが同じチェックアウトを編集するのは避けたい。

明示的に分割を依頼する:

You: Use worktrees for agents. Split this migration into 5 batches of files.

各ワーカーに以下を与える:

  • リポジトリ全体のビュー
  • 狭いファイルバッチ
  • 分離されたブランチ
  • レビュー可能な結果

これがworktreeが便利な機能からではなく、実際の並行インフラとして機能し始めるポイントだ。

Worktreeを健全に保つ小さなルール

仕組みは簡単だ。チームの習慣こそがworktreeを有用に保つ:

  • Worktreeにはチケット番号だけでなく、成果にちなんだ名前をつける
  • 空または放棄されたworktreeはすぐに削除する
  • アクティブな思考の流れごとに1つのworktreeを使う
  • ブランチのプレフィックスを一貫させてクリーンアップを明確にする
  • 他のブランチと同様に、worktree間のマージ前にdiffをレビューする

Worktreeが煩雑に感じ始めたとすれば、たいていそれは多すぎるからではない。どれが使い捨てでどれが重要なのか、誰にも分からないからだ。

クリーンアップとハウスキーピング

Worktreeのクリーンアップ方法は、その中で実際に何かが変更されたかどうかによって異なる:

  • 変更なし: セッション終了時にworktreeとそのブランチが自動的に削除される
  • 変更あり: Claudeがworktreeを保持するか削除するかを確認する

Worktreeフォルダをバージョン管理から除外するには.gitignoreに1行追加する:

echo ".claude/worktrees/" >> .gitignore

Worktreeが積み重なってきたら、通常のgitコマンドでリストアップと剪定ができる:

git worktree list
git worktree prune

Worktreeを使うタイミング

シナリオWorktreeを使う?理由
単一ファイルのクイックフィックスいいえオーバーヘッドに見合わない
バグを直しながらフィーチャー作業はいフィーチャーとバグフィックスのブランチをクリーンに保つ
マルチエージェントの並行実行はいエージェント間のファイル衝突を防ぐ
多くのファイルのコードマイグレーションはい分離されたエージェントで作業を分割する
実験的なアプローチの探索はい自動クリーンアップ付きの使い捨てworktree
単一の集中したセッションいいえ通常のチェックアウトで十分

経験則として: 衝突を避けるために別のブランチを選ぶときは、代わりにworktreeを選ぼう。ブランチと、それに付随する別の作業ディレクトリの両方が手に入る。

覚えておこう: Worktreesは Claude Codeを1つのスレッドから並行開発環境に変える。分離されたセッションを起動する。分離されたエージェントをディスパッチする。準備ができたら勝者をマージする。

Continue in Workflow

  • Claude Code ベストプラクティス
    Claude Codeで成果を出すエンジニアを分ける5つの習慣: PRD、モジュラーなCLAUDE.mdのルール、カスタムスラッシュコマンド、/clearリセット、そしてシステム進化の思考法。
  • Claude Code オートモード
    2つ目の Sonnet モデルが、Claude Code のすべてのツール呼び出しを実行前に審査します。オートモードがブロックするもの・許可するもの、そして settings.json に追加される許可ルールについて解説します。
  • Claude Code Channels
    プラグイン MCPサーバーを使って Claude Code を Telegram、Discord、iMessage に接続する方法。セットアップの手順と、接続する価値のある非同期モバイルワークフローを解説します。
  • Claude Opus 4.7 ベストプラクティス
    Claude Code で Claude Opus 4.7 を最大限に活用する: 最初のターン、effort設定、アダプティブシンキング、ツールプロンプト、サブエージェント、セッションリセット、トークン管理。
  • Claude Code レビュー
    並列 Claude エージェントがすべての PR でバグを調査し、指摘事項を相互確認し、精度の高いコメントを一件投稿する。検出内容、コスト、有効化の方法。
  • フィードバックループ
    コードを書き、テストまたは開発コマンドを実行し、出力を読み取り、壊れたものを修正し、スイートがグリーンになるまでループするプロンプトをClaude Codeに一つ渡す。

More from Handbook

  • エージェントの基礎
    Claude Codeでスペシャリストエージェントを構築する5つの方法:タスクサブエージェント、.claude/agents YAML、カスタムスラッシュコマンド、CLAUDE.mdペルソナ、パースペクティブプロンプト。
  • エージェントパターン
    オーケストレーター、ファンアウト、バリデーションチェーン、スペシャリストルーティング、プログレッシブリファインメント、ウォッチドッグ。Claude Code のサブエージェントを組み合わせる6つのオーケストレーション形状。
  • エージェントチームのベストプラクティス
    Claude Code エージェントチームの実証済みパターン。コンテキストが豊富なスポーンプロンプト、適切なサイズのタスク、ファイルオーナーシップ、デリゲートモード、v2.1.33〜v2.1.45 の修正内容。
  • エージェントチームのコントロール
    デリゲートモード、表示モード、プラン承認、ファイル境界、CLAUDE.md ルールを設定して、Claude Code のチームリードがコーディングではなくコーディネートに専念できるようにします。

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。

Claude Code レビュー

並列 Claude エージェントがすべての PR でバグを調査し、指摘事項を相互確認し、精度の高いコメントを一件投稿する。検出内容、コスト、有効化の方法。

Claude Codeリモートコントロール

スマートフォン、タブレット、ブラウザからローカルのClaude Codeターミナルセッションを操作する。セットアップ、セキュリティモデル、そしてリモートコントロールとOpenClawの比較。

On this page

Worktreesが変えること
CLI: --worktreeフラグ
名前付きworktree
自動命名worktree
複数の並行セッション
セッション途中でのworktree作成
デスクトップアプリ: 自動分離
サブエージェントのworktree分離
Claudeにエージェントを分離するよう依頼する
並行実行で重要な理由
分離を内蔵したカスタムエージェント
Git以外のバージョン管理システムのサポート
盗む価値のある3つのWorktreeパターン
1. フィーチャー作業を壊さずにホットフィックス
2. リスクのあるリファクタリングの競合実装
3. 分離されたサブエージェントによるバッチマイグレーション
Worktreeを健全に保つ小さなルール
クリーンアップとハウスキーピング
Worktreeを使うタイミング

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。