Git Worktreeは、Claude Codeの並列開発能力を安全に引き出すための基盤技術です。物理的なディレクトリ分離により、複数エージェントの同時作業でもファイル競合が発生しません。
Git Worktreeは、Claude Codeの並列開発能力を安全に引き出すための基盤技術です。物理的なディレクトリ分離により、複数エージェントの同時作業でもファイル競合が発生しません。
ブログ目次
HubSpot導入、AI活用、CRM整備、業務効率化までをまとめて支援しています。記事で気になったテーマを、そのまま相談ベースで整理できます。
Claude CodeはGit Worktreeを自動的に活用し、メインの作業ディレクトリを汚さずに別ブランチでの開発を並列実行できます。 複数のAIエージェントが同時に異なる機能を開発する場合や、レビュー中のPRとは別の作業を進めたい場合に、ワークツリーによるブランチ分離が安全性と生産性を両立します。
Git Worktreeを活用してClaude Codeでの並列開発を効率化したい開発者に向けた記事です。
Git Worktreeは、1つのGitリポジトリから複数の作業ディレクトリ(ワークツリー)を作成する機能です。通常、Gitリポジトリには1つの作業ディレクトリしかありませんが、git worktree addコマンドで別のディレクトリに別ブランチをチェックアウトできます。
| 操作 | 従来(git checkout) |
Git Worktree |
|---|---|---|
| ブランチ切り替え | 作業ディレクトリの中身が置き換わる | 別ディレクトリに新しいブランチが展開される |
| 未コミットの変更 | stashまたはコミットが必要 | そのまま残せる |
| 同時作業 | 1ブランチのみ | 複数ブランチを同時に操作可能 |
| ファイル競合リスク | ブランチ切り替え時に発生しうる | ディレクトリが分離しているため発生しない |
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インスタンスが同時に異なる機能を開発するケースがあります。
エージェントA: feature-auth ブランチ(認証機能実装)
→ ワークツリー: .worktrees/feature-auth/
エージェントB: feature-dashboard ブランチ(ダッシュボード実装)
→ ワークツリー: .worktrees/feature-dashboard/
エージェントC: fix-performance ブランチ(パフォーマンス改善)
→ ワークツリー: .worktrees/fix-performance/
各エージェントは物理的に別のディレクトリで作業するため、ファイルの競合が発生しません。それぞれが独立してコミット・プッシュ・PR作成まで完結できます。
Anthropicの公開事例では、複数のAIエージェントが並列でコード変更を行う際にワークツリーを活用し、マージ競合の発生率を大幅に低減しています。
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 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)はブランチごとに異なる可能性があるため、ワークツリー作成後に依存関係の再インストールを推奨します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の並列開発能力を安全に引き出すための基盤技術です。物理的なディレクトリ分離により、複数エージェントの同時作業でもファイル競合が発生しません。
押さえておきたいポイントは以下の通りです。
いいえ、Gitのオブジェクトデータベース(.git/)は全ワークツリーで共有されるため、リポジトリの履歴データは重複しません。増えるのは作業ディレクトリのファイル(ソースコード、node_modulesなど)のみです。ソースコード自体のサイズは通常小さいため、実質的な増加はnode_modulesなどの依存関係が主です。
ファイルシステム上は完全に分離されているため、あるワークツリーでの変更が別のワークツリーのファイルに影響することはありません。ただし、同じブランチを複数のワークツリーで同時にチェックアウトすることはGitの仕様上できません。各ワークツリーは異なるブランチを担当する必要があります。
Claude Codeのデフォルト設定では、プロジェクトルートの.worktrees/ディレクトリ配下に作成されます。git worktree listコマンドで全ワークツリーの場所を確認できます。不要になったワークツリーはgit worktree removeで削除するか、Claude Codeに「ワークツリーをクリーンアップしてください」と指示してください。
株式会社StartLinkは、事業推進に関わる「販売促進」「DXによる業務効率化(ERP/CRM/SFA/MAの導入)」などのご相談を受け付けております。 サービスのプランについてのご相談/お見積もり依頼や、ノウハウのお問い合わせについては、無料のお問い合わせページより、お気軽にご連絡くださいませ。
株式会社StartLink 代表取締役。累計150社以上のHubSpotプロジェクト支援実績を持ち、Claude CodeやHubSpotを軸にしたAI活用支援・経営基盤AXのコンサルティング事業を展開。
HubSpotのトップパートナー企業や大手人材グループにて、エンタープライズCRM戦略策定・AI戦略ディレクションを経験した後、StartLinkを創業。現在はCRM×AIエージェントによる経営管理支援を専門とする。