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 stash や git checkout をする必要がなくなります。各ブランチが独立したディレクトリで動くので、ビルドキャッシュや node_modules も保持されます。
Claude Code での Worktrees
claude --worktree コマンド
Claude Code には、Worktree を 自動的に作成して 新しいセッションを開始するオプションがあります。
# Worktree を作成して Claude セッションを開始
claude --worktreeこのコマンドを実行すると、以下のことが自動的に行われます。
- 現在のブランチから新しい Worktree を作成
- 新しいディレクトリに作業環境をセットアップ
- そのディレクトリで Claude Code セッションを開始
並列タスクの実行
ターミナルを複数開いて、それぞれで claude --worktree を実行すれば、複数のタスクを同時に Claude に任せることができます。
実践的な使い方
例 1: 複数のバグを同時に修正
# ターミナル 1: バグ A の修正
claude --worktree
> Issue #10 のログイン時のバグを修正してください
# ターミナル 2: バグ B の修正
claude --worktree
> Issue #11 の検索機能のバグを修正してください
# ターミナル 3: バグ C の修正
claude --worktree
> Issue #12 のパフォーマンスの問題を修正してください各タスクが 独立したブランチ で進行するため、お互いに影響しません。
例 2: 機能開発とバグ修正を並行
# ターミナル 1: 新機能の開発(時間がかかる)
claude --worktree
> ユーザー検索機能を実装してください
# ターミナル 2: 緊急バグ修正(並行して対応)
claude --worktree
> 本番で発生している認証エラーを修正してください例 3: 実験的な変更を安全に試す
# Worktree で実験(メインの作業に影響しない)
claude --worktree
> React を Vue に置き換えた場合のプロトタイプを作ってみてください実験が不要になったら
Worktree で作成した実験的なコードは、不要になったら簡単に削除できます。メインのリポジトリには一切影響しません。
Worktree の管理
Worktree の一覧確認
# 現在の 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 は削除しましょう。
# 特定の Worktree を削除
git worktree remove /Users/user/my-project-feature-search
# 不要な Worktree を一括クリーンアップ
git worktree pruneWorktree の削除前に確認
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 list | Worktree の一覧を表示 |
git worktree remove <path> | Worktree を削除 |
git worktree prune | 無効な Worktree を削除 |
手動で Worktree を作成する場合
# 新しいブランチで Worktree を作成
git worktree add ../my-project-feature-a -b feature/new-feature
# 既存のブランチで Worktree を作成
git worktree add ../my-project-fix-bug fix/login-bugWorktree の仕組み
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 連携やパイプ入力など 高度なワークフロー を学びましょう。