Skip to content

Git Worktrees

Git Worktrees を使うと、同じリポジトリの複数ブランチを同時に 作業できます。Claude Code の --worktree オプションと組み合わせることで、複数のタスクを並列実行できます。

Git Worktrees とは

通常の Git では、1つのリポジトリで同時に作業できるブランチは 1 つだけです。Git Worktrees を使うと、同じリポジトリの 異なるブランチを別々のディレクトリ で同時に作業できます。

通常の Git:
  my-project/  ← 1つのブランチしか作業できない
  ├── src/
  └── ...

Git Worktrees:
  my-project/              ← main ブランチ
  my-project-feature-a/    ← feature-a ブランチ
  my-project-fix-bug/      ← fix-bug ブランチ
  (3つのブランチを同時に作業可能)

なぜ Worktrees が便利なのか

ブランチを切り替えるたびに git stashgit checkout をする必要がなくなります。各ブランチが独立したディレクトリで動くので、ビルドキャッシュや node_modules も保持されます。

Claude Code での Worktrees

claude --worktree コマンド

Claude Code には、Worktree を 自動的に作成して 新しいセッションを開始するオプションがあります。

bash
# Worktree を作成して Claude セッションを開始
claude --worktree

このコマンドを実行すると、以下のことが自動的に行われます。

  1. 現在のブランチから新しい Worktree を作成
  2. 新しいディレクトリに作業環境をセットアップ
  3. そのディレクトリで Claude Code セッションを開始

並列タスクの実行

ターミナルを複数開いて、それぞれで claude --worktree を実行すれば、複数のタスクを同時に Claude に任せることができます。

実践的な使い方

例 1: 複数のバグを同時に修正

bash
# ターミナル 1: バグ A の修正
claude --worktree
> Issue #10 のログイン時のバグを修正してください

# ターミナル 2: バグ B の修正
claude --worktree
> Issue #11 の検索機能のバグを修正してください

# ターミナル 3: バグ C の修正
claude --worktree
> Issue #12 のパフォーマンスの問題を修正してください

各タスクが 独立したブランチ で進行するため、お互いに影響しません。

例 2: 機能開発とバグ修正を並行

bash
# ターミナル 1: 新機能の開発(時間がかかる)
claude --worktree
> ユーザー検索機能を実装してください

# ターミナル 2: 緊急バグ修正(並行して対応)
claude --worktree
> 本番で発生している認証エラーを修正してください

例 3: 実験的な変更を安全に試す

bash
# Worktree で実験(メインの作業に影響しない)
claude --worktree
> React を Vue に置き換えた場合のプロトタイプを作ってみてください

実験が不要になったら

Worktree で作成した実験的なコードは、不要になったら簡単に削除できます。メインのリポジトリには一切影響しません。

Worktree の管理

Worktree の一覧確認

bash
# 現在の Worktree を一覧表示
git worktree list

出力例:

/Users/user/my-project                  abc1234 [main]
/Users/user/my-project-feature-search   def5678 [feature/search]
/Users/user/my-project-fix-auth         ghi9012 [fix/auth-error]

Worktree の削除(クリーンアップ)

作業が完了した Worktree は削除しましょう。

bash
# 特定の Worktree を削除
git worktree remove /Users/user/my-project-feature-search

# 不要な Worktree を一括クリーンアップ
git worktree prune

Worktree の削除前に確認

Worktree を削除する前に、以下を確認してください。

  • 変更がすべてコミットされているか
  • ブランチがリモートにプッシュされているか
  • マージが完了しているか

Worktree を使った開発フロー

┌─────────────────────────────────────────┐
│  Step 1: タスクの洗い出し                  │
│  「今日やるべきタスクは 3 つある」           │
└─────────────┬───────────────────────────┘

    ┌─────────┼──────────┐
    ↓         ↓          ↓
┌────────┐ ┌────────┐ ┌────────┐
│ Task A │ │ Task B │ │ Task C │
│ Worktree│ │ Worktree│ │ Worktree│
│ Claude  │ │ Claude  │ │ Claude  │
└───┬────┘ └───┬────┘ └───┬────┘
    ↓         ↓          ↓
┌────────┐ ┌────────┐ ┌────────┐
│ PR #1  │ │ PR #2  │ │ PR #3  │
└────────┘ └────────┘ └────────┘

Git Worktree の基本コマンド

コマンド説明
git worktree add <path> <branch>新しい Worktree を作成
git worktree listWorktree の一覧を表示
git worktree remove <path>Worktree を削除
git worktree prune無効な Worktree を削除

手動で Worktree を作成する場合

bash
# 新しいブランチで Worktree を作成
git worktree add ../my-project-feature-a -b feature/new-feature

# 既存のブランチで Worktree を作成
git worktree add ../my-project-fix-bug fix/login-bug
Worktree の仕組み

Git Worktree は、同じ .git ディレクトリを共有しながら、異なるディレクトリで異なるブランチを展開します。

my-project/.git/           ← 共有の Git データ
my-project/                ← main ブランチの作業ディレクトリ
my-project-feature-a/      ← feature-a の作業ディレクトリ
my-project-fix-bug/        ← fix-bug の作業ディレクトリ

各 Worktree は独立したファイルを持ちますが、Git の履歴やブランチ情報は共有されます。そのため、ディスク使用量は最小限に抑えられます。

注意点

同じブランチを複数の Worktree で開けない

Git の制約により、同じブランチを複数の Worktree で同時にチェックアウトすることはできません。各 Worktree は必ず異なるブランチで作業してください。

まとめ

項目内容
コマンドclaude --worktree で自動作成
メリット複数タスクの並列実行、独立した作業環境
管理git worktree list で一覧、remove で削除
注意点作業完了後はクリーンアップする

次は、CI/CD 連携やパイプ入力など 高度なワークフロー を学びましょう。

Anthropic公式ドキュメントを基に作成