• #git
  • #workflow
  • #claude
  • #productivity
未分類

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つの機能を並行開発

  1. メインリポジトリ: C:/Users/username/Git_repo/myproject
    • ブランチ: main
    • 用途: コードレビューや軽微な修正
  2. Worktree 1: C:/Users/username/Git_repo/myproject-feature-auth
    • ブランチ: feature/authentication
    • 用途: 認証機能の実装
    • Claudeセッション1で作業中
  3. 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を開始

注意点とベストプラクティス

注意点

  1. 同じブランチを複数のworktreeでチェックアウトできない
    • 各worktreeは異なるブランチを使用する必要があります
  2. 設定ファイルの競合
    • .claude/settings.local.jsonなどのローカル設定は各worktreeで個別に管理されます
    • 必要に応じて各worktreeで設定を調整してください
  3. 依存関係のインストール
    • 各worktreeでnpm installpnpm installを実行する必要がある場合があります
    • node_modulesは各worktreeで独立しています

ベストプラクティス

  1. 命名規則
    • worktreeディレクトリは<プロジェクト名>-<ブランチ名>の形式で命名すると分かりやすい
    • 例: myproject-feature-a, myproject-bugfix-123
  2. 定期的なクリーンアップ
    • 不要になったworktreeは削除してディスクスペースを節約
    • git worktree pruneで孤立したworktreeのメタデータを削除
  3. 作業の明確な分離
    • 各worktreeで独立したタスクを実行
    • 相互依存性のあるタスクは同じworktreeで実行する
  4. ブランチの同期
    • 各worktreeで作業前にgit fetchを実行して最新の状態を取得
    • ベースブランチ(main/develop)の変更を定期的にマージ

よくある使用パターン

パターン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セッションを効率的に並行実行できます。これにより:

  • タスクの切り替え時間を削減
  • 複数の機能を同時に開発
  • コンテキストスイッチングを最小化
  • 生産性の向上

を実現できます。適切に使用することで、開発ワークフローが大幅に改善されます。

参考リンク