入門
Worktree で並行作業を安全に行う
Git worktree を使って複数の Claude Code セッションを独立して並行実行する方法
解決の目安約5分
最終確認
確認済みバージョン
Claude Code 2.1.220
Claude Code
必須: Claude Code
worktreeparallelgit
症状・対象
同じ checkout で複数セッションを動かし、未保存の変更や同じファイルを上書きしてしまう人が対象です。Git worktree で作業ディレクトリと branch を分離します。
最短解決
- 元の checkout が Git リポジトリであることを確認する。
- タスク名を付けて
claude -wを起動する。 - 起動先で branch と変更状態を確認してから編集する。
コピペ例
別々のターミナルから、独立した名前で起動します。
# Terminal A
claude -w feature-auth
# Terminal B
claude -w fix-login-timeout
カスタムエージェントを常に分離したい場合は、定義へ isolation: worktree を追加します。
---
name: isolated-reviewer
description: "Use when a review task needs an isolated checkout."
isolation: worktree
---
Read the requested diff, run the stated checks, and report findings.
Do not edit files unless the user explicitly requests a fix.
期待結果
- 各セッションの作業ディレクトリと branch が分かれる。
- 一方の未コミット変更が、もう一方の working tree に現れない。
- Git の履歴と remote は共有されるため、commit 後は通常の PR 手順で統合できる。
検証
各セッション内で次を実行し、パスと branch が異なることを確認します。
pwd
git status --short --branch
git worktree list
片方でテスト用ファイルを変更したとき、もう片方の git status --short にその変更が出なければ分離できています。
落とし穴
- 同じ branch を複数 worktree へ checkout しようとすると Git が拒否します。タスクごとに名前を変えます。
- worktree は Git 管理外の共有サービス、DB、ポートまでは分離しません。開発サーバーのポートやテスト DB も分けます。
- ディレクトリを直接削除すると worktree メタデータが残ります。変更を確認したうえで
git worktree remove <path>を使います。 - 並列作業の担当ファイルが重なると、最終 merge では競合します。開始前に編集境界を決めます。
次の一手
- サブエージェントを並列でスポーンしてタスクを分散する — 独立性を判断して委任する
- セッションの再開と継続を活用する — セッション名と再開方法を整える
関連コンテンツ
ワークフロー
実装
計画に基づいてコードを記述するフェーズ。TDD、サブエージェント駆動開発、並列実行などの手法を活用し、品質と効率を両立させる手法を解説。
Tips
エージェントチームで大規模タスクを並列遂行する
TeamCreate, TaskCreate, SendMessage を使って、複数の独立セッションで協調動作するエージェントチームを構築する方法
Tips
サブエージェントを並列でスポーンしてタスクを分散する
Agent ツールと TodoWrite を組み合わせて、独立したタスクを複数のサブエージェントに並列分散する方法
ワークフロー
計画
調査結果をもとに実装計画を策定するフェーズ。タスクの分解、依存関係の整理、実行順序の決定を体系化し、手戻りリスクを最小化する手法を解説。