ワークツリーとは
Git の worktree(ワークツリー)機能は、1つのリポジトリから複数の作業ディレクトリを同時に展開する仕組みです。Claude Code はこの機能をネイティブサポートしており、メインの作業を中断せずに別タスクを安全に進められます。
基本的な使い方
Claude Code でワークツリーを起動
Claude Code のプロンプトで「ワークツリーで作業」と指示するだけで、自動的に新しいワークツリーが作成されます。
# Claude Code のプロンプトで
> このバグ修正をワークツリーで進めて
# Claude Code が自動的に実行する内容:
# 1. .claude/worktrees/ 配下に新しいワークツリーを作成
# 2. HEAD から新しいブランチを切る
# 3. そのディレクトリで作業を開始手動でワークツリーを作成
Git コマンドで直接作成することも可能です。
# 新しいワークツリーを作成(新ブランチも同時に作成)
git worktree add ../my-feature -b feature/new-login
# 既存ブランチをワークツリーとして展開
git worktree add ../hotfix-dir hotfix/critical-bug
# ワークツリーの一覧を確認
git worktree list実践シナリオ
シナリオ1: メイン作業中の緊急バグ修正
新機能の開発中に本番のバグ修正依頼が来た場合、ワークツリーなら作業を中断せずに対応できます。
現在の状態:
main ブランチ → メインのワークツリー(新機能開発中)
緊急バグ修正:
hotfix ブランチ → 別のワークツリーで修正
Claude Code での操作例:
# メインの作業ディレクトリはそのまま
> 本番のログインエラーをワークツリーで修正して。
> main ブランチから hotfix/login-error ブランチを切って対応して。Claude Code は別ディレクトリでバグを修正し、PR を作成します。メインの作業ディレクトリには一切影響しません。
シナリオ2: 複数の PR を同時に作業
異なる機能を並行して開発する場合にも有効です。
# ワークツリー1: ユーザー認証の改善
git worktree add ../auth-improvement -b feature/auth-v2
# ワークツリー2: ダッシュボードの新機能
git worktree add ../dashboard-feature -b feature/dashboard
# ワークツリー3: パフォーマンス改善
git worktree add ../perf-tuning -b perf/optimize-queries各ワークツリーは独立しているので、ビルドやテストも互いに干渉しません。
シナリオ3: スケジュールタスクとの並行作業
Cowork のスケジュールタスクがリポジトリに自動コミットする場合、手動作業と競合する可能性があります。ワークツリーを使えば安全に分離できます。
# メインのワークツリー: スケジュールタスクが main ブランチに自動コミット
# 手動のワークツリー: 別ブランチで UI 改善を進める
git worktree add ../ui-redesign -b feature/ui-redesign
# 作業完了後、main にマージ
git checkout main
git merge feature/ui-redesignワークツリーの管理
一覧の確認
git worktree list
# /home/user/myproject abc1234 [main]
# /home/user/myproject-hotfix def5678 [hotfix/login-error]
# /home/user/myproject-feature ghi9012 [feature/dashboard]ワークツリーの削除
作業が完了したワークツリーは削除してディスク容量を節約します。
# ワークツリーを削除
git worktree remove ../myproject-hotfix
# 強制削除(未コミットの変更がある場合)
git worktree remove --force ../myproject-hotfix
# 削除済みワークツリーの参照をクリーンアップ
git worktree pruneClaude Code 終了時の自動クリーンアップ
Claude Code でワークツリーを使用した場合、セッション終了時に「ワークツリーを保持するか削除するか」の確認が表示されます。変更がない場合は自動的にクリーンアップされます。
注意点とベストプラクティス
同じブランチは同時に展開できない
1つのブランチは1つのワークツリーでしか使用できません。
# これはエラーになる
git worktree add ../second-main main
# fatal: 'main' is already checked out at '/home/user/myproject'node_modules の扱い
各ワークツリーは独立したディレクトリなので、node_modules も個別にインストールが必要です。
cd ../my-feature
npm install # ワークツリーごとに必要ワークツリー間でのファイル共有
.git ディレクトリは元のリポジトリと共有されるため、以下は全ワークツリーで共通です:
- Git の設定(
.git/config) - リモート設定
- reflog
- Git hooks
逆に、以下はワークツリーごとに独立しています:
- 作業ファイル(ソースコード)
- ステージングエリア(インデックス)
HEADの参照先(チェックアウト中のブランチ)
Claude Code との組み合わせテクニック
Task ツールとワークツリー
Claude Code の Task ツールに isolation: "worktree" を指定すると、サブエージェントが自動的にワークツリー内で作業します。
Task ツールで isolation: "worktree" を指定
→ サブエージェントが独立したワークツリーで作業
→ 変更がある場合はブランチとパスが返される
→ メインの作業に影響なし
/worktree スラッシュコマンド
Claude Code では /worktree コマンドで対話的にワークツリーを管理できます。
> /worktree # ワークツリー関連の操作メニュー全体を振り返って
ワークツリーは、Claude Code での並行開発を安全かつ効率的にする強力な機能です。メインの作業を中断せずに緊急対応ができ、複数の PR を同時に進められます。スケジュールタスクとの競合を防ぐ手段としても有効です。ブランチ切替のストレスから解放され、よりスムーズな開発ワークフローを実現しましょう。