未分類
Git Worktreeを使った複数のClaudeセッションの並行実行
概要
Git worktreeを使用することで、同じリポジトリの異なるブランチで複数のClaudeセッションを並行して実行できます。これにより、異なるタスクを切り替えることなく同時に作業できます。
Git Worktreeとは
Git worktreeは、1つのリポジトリから複数の作業ディレクトリを作成できるGitの機能です。各worktreeは独立した作業ツリーを持ち、異なるブランチをチェックアウトできます。
Git Worktreeの構造
メリット
- 並行作業: 異なる機能やバグ修正を同時に進められる
- ディスク効率:
.gitディレクトリは共有されるため、フルクローンよりも軽量 - 素早い切り替え: ブランチ間の切り替えがディレクトリの移動だけで完了
- 環境の独立性: 各worktreeで別々のClaudeセッションを実行可能
基本的な使い方
1. Worktreeの作成
# 新しいブランチでworktreeを作成
git worktree add ../myproject-feature-a feature-a
# 既存のブランチでworktreeを作成
git worktree add ../myproject-bugfix bugfix/issue-123
# メインリポジトリと同じディレクトリ階層に作成する例
git worktree add ../myproject-develop develop
2. Worktreeの一覧表示
git worktree list
出力例:
C:/Users/username/Git_repo/myproject abc1234 [main]
C:/Users/username/Git_repo/myproject-feature-a def5678 [feature-a]
C:/Users/username/Git_repo/myproject-bugfix ghi9012 [bugfix/issue-123]
3. Worktreeでの作業
各worktreeディレクトリに移動して、通常通り作業を進めます:
cd ../myproject-feature-a
# ここでClaudeセッションを開始
# 開発作業を実施
git add .
git commit -m "feat: 新機能の実装"
git push
4. Worktreeの削除
作業が完了したら、worktreeを削除できます:
# worktreeディレクトリを削除
git worktree remove ../myproject-feature-a
# または、ディレクトリを手動で削除した後
git worktree prune
複数のClaudeセッション実行の実践例
シナリオ: 2つの機能を並行開発
- メインリポジトリ:
C:/Users/username/Git_repo/myproject- ブランチ:
main - 用途: コードレビューや軽微な修正
- ブランチ:
- Worktree 1:
C:/Users/username/Git_repo/myproject-feature-auth- ブランチ:
feature/authentication - 用途: 認証機能の実装
- Claudeセッション1で作業中
- ブランチ:
- Worktree 2:
C:/Users/username/Git_repo/myproject-feature-api- ブランチ:
feature/api-integration - 用途: API統合の実装
- Claudeセッション2で作業中
- ブランチ:
セットアップ手順
# メインリポジトリで作業
cd C:/Users/username/Git_repo/myproject
# 認証機能用のworktreeを作成
git worktree add ../myproject-feature-auth feature/authentication
# API統合用のworktreeを作成
git worktree add ../myproject-feature-api feature/api-integration
# 各worktreeで別々のClaudeセッションを起動
# Terminal 1
cd ../myproject-feature-auth
# Claudeセッション1を開始
# Terminal 2
cd ../myproject-feature-api
# Claudeセッション2を開始
注意点とベストプラクティス
注意点
- 同じブランチを複数のworktreeでチェックアウトできない
- 各worktreeは異なるブランチを使用する必要があります
- 設定ファイルの競合
.claude/settings.local.jsonなどのローカル設定は各worktreeで個別に管理されます- 必要に応じて各worktreeで設定を調整してください
- 依存関係のインストール
- 各worktreeで
npm installやpnpm installを実行する必要がある場合があります node_modulesは各worktreeで独立しています
- 各worktreeで
ベストプラクティス
- 命名規則
- worktreeディレクトリは
<プロジェクト名>-<ブランチ名>の形式で命名すると分かりやすい - 例:
myproject-feature-a,myproject-bugfix-123
- worktreeディレクトリは
- 定期的なクリーンアップ
- 不要になったworktreeは削除してディスクスペースを節約
git worktree pruneで孤立したworktreeのメタデータを削除
- 作業の明確な分離
- 各worktreeで独立したタスクを実行
- 相互依存性のあるタスクは同じworktreeで実行する
- ブランチの同期
- 各worktreeで作業前に
git fetchを実行して最新の状態を取得 - ベースブランチ(main/develop)の変更を定期的にマージ
- 各worktreeで作業前に
よくある使用パターン
パターン1: 機能開発とバグ修正の並行
# 機能開発
git worktree add ../myproject-feature feature/new-dashboard
# 緊急のバグ修正
git worktree add ../myproject-hotfix hotfix/critical-bug
パターン2: レビュー用の一時的なworktree
# PRレビュー用のworktreeを作成
git worktree add ../myproject-review pr/123
# レビュー完了後に削除
git worktree remove ../myproject-review
パターン3: 異なる環境でのテスト
# 本番環境ブランチ
git worktree add ../myproject-prod production
# ステージング環境ブランチ
git worktree add ../myproject-staging staging
まとめ
Git worktreeを活用することで、複数のClaudeセッションを効率的に並行実行できます。これにより:
- タスクの切り替え時間を削減
- 複数の機能を同時に開発
- コンテキストスイッチングを最小化
- 生産性の向上
を実現できます。適切に使用することで、開発ワークフローが大幅に改善されます。