Claude CodeはGit Worktreeを自動的に活用し、メインの作業ディレクトリを汚さずに別ブランチでの開発を並列実行できます。 複数のAIエージェントが同時に異なる機能を開発する場合や、レビュー中のPRとは別の作業を進めたい場合に、ワークツリーによるブランチ分離が安全性と生産性を両立します。
本記事は2026年8月時点の情報です。
この記事でわかること
Git Worktreeを活用してClaude Codeでの並列開発を効率化したい開発者に向けた記事です。
- Git Worktreeの基本概念と、Claude Codeが自動的にワークツリーを活用する仕組み — ClaudeCodeには、ワークツリーを自動的に作成・管理する機能が組み込まれています。
- 複数エージェントによる並列開発を安全に実行するための設定と運用方法 — ワークツリーの配置場所には、プロジェクトの外に置くパターンとプロジェクト内に置くパターンがあります。
- SDKとの連携で、大規模な並列タスクを効率的に処理するパターン — 大規模なプロジェクトでは、複数のClaudeCodeインスタンスが同時に異なる機能を開発するケースがあります。
Git Worktreeとは
Git Worktreeは、1つのGitリポジトリから複数の作業ディレクトリ(ワークツリー)を作成する機能です。通常、Gitリポジトリには1つの作業ディレクトリしかありませんが、git worktree addコマンドで別のディレクトリに別ブランチをチェックアウトできます。
従来のブランチ切り替えとの違い
| 操作 |
従来(git checkout) |
Git Worktree |
| ブランチ切り替え |
作業ディレクトリの中身が置き換わる |
別ディレクトリに新しいブランチが展開される |
| 未コミットの変更 |
stashまたはコミットが必要 |
そのまま残せる |
| 同時作業 |
1ブランチのみ |
複数ブランチを同時に操作可能 |
| ファイル競合リスク |
ブランチ切り替え時に発生しうる |
ディレクトリが分離しているため発生しない |
Claude Codeのようなエージェントが複数同時に動く環境では、ワークツリーによる物理的なディレクトリ分離が必須です。同じディレクトリで複数のエージェントがファイルを変更すると、意図しない上書きが発生します。
Claude Codeでのワークツリー自動活用
Claude Codeには、ワークツリーを自動的に作成・管理する機能が組み込まれています。
自動ワークツリー作成
Claude Codeで新しいブランチを作成して作業を始める場合、エージェントが自動的にワークツリーを作成します。複数のClaude Codeインスタンスで並列実行する際にも、各タスクが独立したワークツリーで実行されます。
メインディレクトリ: ~/project/
├── .git/ ← 共有のGitオブジェクトDB
├── src/ ← mainブランチの作業ディレクトリ
└── ...
ワークツリー: ~/project/.worktrees/feature-auth/
├── src/ ← feature-authブランチの作業ディレクトリ
└── ...
ワークツリー: ~/project/.worktrees/fix-bug-123/
├── src/ ← fix-bug-123ブランチの作業ディレクトリ
└── ...
手動でのワークツリー管理
Claude Codeのセッション中に、手動でワークツリーを操作することも可能です。
# 新しいワークツリーを作成
**git worktree add ../.worktrees/feature-new-api feature-new-api**
git worktree add ../.worktrees/feature-new-api feature-new-api
# ワークツリーの一覧を確認
git worktree list
# 不要になったワークツリーを削除
git worktree remove ../.worktrees/feature-new-api
Claude Codeに「feature-new-apiブランチでワークツリーを作成して、そこでAPI実装を進めてください」と指示すれば、上記のコマンドを自動で実行します。こうした指示は、目的と制約を明示するほど正確に実行されます。指示の書き方はClaude Codeのプロンプト設計術で解説しています。
実務での活用パターン
パターン1: 複数エージェントによる機能並列開発
大規模なプロジェクトでは、複数のClaude Codeインスタンスが同時に異なる機能を開発するケースがあります。どのウィンドウがどのワークツリーかを見分けやすくするため、テーマやステータスラインを変えておくと混乱を防げます。設定方法はClaude Codeの見た目カスタマイズをご覧ください。
エージェントA: feature-auth ブランチ(認証機能実装)
→ ワークツリー: .worktrees/feature-auth/
エージェントB: feature-dashboard ブランチ(ダッシュボード実装)
→ ワークツリー: .worktrees/feature-dashboard/
エージェントC: fix-performance ブランチ(パフォーマンス改善)
→ ワークツリー: .worktrees/fix-performance/
各エージェントは物理的に別のディレクトリで作業するため、ファイルの競合が発生しません。それぞれが独立してコミット・プッシュ・PR作成まで完結できます。別ベンダーのAIにセカンドオピニオンを取らせる構成も可能で、その手順はClaude CodeとCodexの連携方法で解説しています。
Anthropicの公開事例では、複数のAIエージェントが並列でコード変更を行う際にワークツリーを活用し、マージ競合の発生率を大幅に低減しています。
パターン2: レビュー中の作業と新規開発の分離
PRのレビュー待ちの間に別の作業を進めたい場合に有効です。
# 現在の作業をPRとして提出
git push origin feature-current
gh pr create --title "機能A実装"
# 別のワークツリーで新しい作業を開始
git worktree add ../.worktrees/feature-next -b feature-next
cd ../.worktrees/feature-next
Claude Codeに「現在のブランチのPRを作成してから、新しいワークツリーで次の機能開発に着手してください」と指示すれば、このフローを自動で実行します。レビューの修正指摘が来たら、元のワークツリーに戻って対応できます。外出中に指摘が届いた場合は、Claude Codeのリモート操作方法で手元の端末から対応を始められます。Claude Codeを使った経営データの可視化やコンテンツマーケティングにも、こうした考え方が活かされています。
パターン3: SDK経由での並列タスク実行
Claude Code SDKを使えば、複数のタスクを並列で実行できます。各タスクは独立したワークツリーで実行されるため、タスク間の干渉を気にする必要がありません。
SDK経由で3タスクを並列実行:
タスク1: 「テストを追加」 → .worktrees/task-1/
タスク2: 「ドキュメント更新」 → .worktrees/task-2/
タスク3: 「リファクタリング」 → .worktrees/task-3/
各タスクが完了すると、それぞれ独立したPRが作成されます。レビューとマージは個別に進められます。
ワークツリーの設定とベストプラクティス
ディレクトリ構成の推奨パターン
ワークツリーの配置場所には、プロジェクトの外に置くパターンとプロジェクト内に置くパターンがあります。
| 配置パターン |
パス例 |
メリット |
デメリット |
| プロジェクト外 |
../project-worktrees/feature/ |
IDEの検索対象に含まれない |
パスが長くなる |
| プロジェクト内 |
.worktrees/feature/ |
管理しやすい |
.gitignoreに追加が必要 |
| 隠しディレクトリ |
~/.claude-worktrees/project/feature/ |
完全に分離 |
プロジェクトとの距離が遠い |
Claude Codeのデフォルトでは、プロジェクト内の.worktrees/ディレクトリにワークツリーが作成されます。.gitignoreに.worktrees/を追加しておくことを推奨します。
クリーンアップの自動化
長期間運用していると、マージ済みブランチのワークツリーが残り続けます。定期的なクリーンアップが必要です。
# マージ済みワークツリーの一覧確認
git worktree list
# 不要なワークツリーを削除
git worktree remove .worktrees/feature-completed
# 残骸の一括クリーンアップ
git worktree prune
Claude Codeに「マージ済みブランチのワークツリーをクリーンアップしてください」と指示すれば、上記の操作を安全に実行します。
注意点: ワークツリー間での共有リソース
ワークツリーは独立したディレクトリですが、.gitオブジェクトデータベースは共有しています。以下の点に注意してください。
node_modulesや.venvはワークツリーごとに独立して存在するため、各ワークツリーでnpm installやpip installが必要です
.envファイルはGit管理外のため、ワークツリーには自動的にコピーされません。手動でコピーするか、シンボリックリンクを設定してください
- ロックファイル(
package-lock.json、poetry.lock)はブランチごとに異なる可能性があるため、ワークツリー作成後に依存関係の再インストールを推奨します
関連コマンドとの組み合わせ
SDK経由での並列実行
Claude Code SDKを使えば、プログラムから複数のワークツリーを作成し、並列でタスクを実行できます。
import { claude } from "@anthropic-ai/claude-code";
const tasks = [
{ branch: "feature-auth", prompt: "認証機能を実装してください" },
{ branch: "feature-api", prompt: "REST APIを実装してください" },
];
const results = await Promise.all(
tasks.map((task) =>
claude({
prompt: task.prompt,
options: {
maxTurns: 30,
cwd: `/path/to/project/.worktrees/${task.branch}`,
},
})
)
);
パーミッションモードとの関係
ワークツリーでの作業は、メインディレクトリと同じパーミッション設定が適用されます。.claude/settings.jsonはメインリポジトリの設定が共有されるため、ワークツリーごとに権限を変える必要はありません。
あわせて読みたい
まとめ
Git Worktreeは、Claude Codeの並列開発能力を安全に引き出すための基盤技術です。物理的なディレクトリ分離により、複数エージェントの同時作業でもファイル競合が発生しません。
押さえておきたいポイントは以下の通りです。
- SDKとの組み合わせで、大規模な並列タスク処理も実現できます
- まずはレビュー待ちの間に別作業を進めるパターンから始め、チームの開発フローに合わせて並列度を拡大していくのが実務的なアプローチです
- *Claude Codeの全コマンド一覧はClaude Codeチートシートをご覧ください
- AI活用の全体像はAI活用完全ガイドで解説しています
よくある質問(FAQ)
Q1. ワークツリーを使うとディスク容量は2倍必要ですか?
いいえ、Gitのオブジェクトデータベース(.git/)は全ワークツリーで共有されるため、リポジトリの履歴データは重複しません。増えるのは作業ディレクトリのファイル(ソースコード、node_modulesなど)のみです。ソースコード自体のサイズは通常小さいため、実質的な増加はnode_modulesなどの依存関係が主です。
Q2. ワークツリーでの変更が他のワークツリーに影響することはありますか?
ファイルシステム上は完全に分離されているため、あるワークツリーでの変更が別のワークツリーのファイルに影響することはありません。ただし、同じブランチを複数のワークツリーで同時にチェックアウトすることはGitの仕様上できません。各ワークツリーは異なるブランチを担当する必要があります。
Q3. Claude Codeが自動作成したワークツリーはどこに保存されますか?
Claude Codeのデフォルト設定では、プロジェクトルートの.worktrees/ディレクトリ配下に作成されます。git worktree listコマンドで全ワークツリーの場所を確認できます。不要になったワークツリーはgit worktree removeで削除するか、Claude Codeに「ワークツリーをクリーンアップしてください」と指示してください。