Skip to content

--worktree起動パフォーマンスの改善:git refs直接読み取りと冗長なfetchのスキップ

原文(日本語に翻訳)

git refsを直接読み取り、リモートブランチがローカルで既に利用可能な場合に冗長な git fetch をスキップすることで、--worktree の起動パフォーマンスを改善

原文(英語)

Improved --worktree startup performance by reading git refs directly and skipping redundant git fetch when the remote branch is already available locally

概要

Claude Code v2.1.76で、--worktree フラグを使用した起動時のパフォーマンスが大幅に改善されました。以前のバージョンでは、ワークツリー作成時に毎回 git fetch を実行してリモートの最新情報を取得していましたが、リモートブランチの情報がローカルに既にキャッシュされている場合は不要な処理でした。今回の改善では、git refsファイルを直接読み取ることでブランチ情報を高速に取得し、git fetch が不要な場合はスキップするようになりました。

基本的な使い方

パフォーマンス改善は自動的に適用されます。--worktree フラグの使い方は変わりません。

bash
# Claude Codeを最新版にアップデート
claude update

# ワークツリーを指定して起動(高速化)
claude --worktree feature-auth

# 短縮形
claude -w feature-auth

# 名前を省略して自動生成
claude -w

実践例

複数のワークツリーを連続で作成

並列作業のために複数のワークツリーを素早く立ち上げる場合:

bash
# 3つのタスクを並列で進行
claude -w feature-login &
claude -w bugfix-api &
claude -w refactor-db &

# v2.1.75以前:各ワークツリーで git fetch が実行され、
#   ネットワーク遅延分の待ち時間が発生(各数秒〜十数秒)
# v2.1.76:ローカルにリモート情報があればfetchをスキップし、
#   ほぼ瞬時にワークツリーが作成される

大規模リポジトリでの起動高速化

巨大なモノレポで作業する場合、git fetch のコストが特に大きくなります:

bash
# 大規模モノレポでのワークツリー起動
claude -w my-task

# v2.1.75以前:git fetch に数十秒かかる場合も
# v2.1.76:git refsを直接読み取るため、起動が大幅に高速化

# さらにsparse-checkoutと組み合わせて高速化
# settings.jsonに設定:
# {
#   "worktree": {
#     "sparsePaths": ["packages/my-package", "shared/"]
#   }
# }

オフライン環境やネットワーク制限のある環境

VPNやファイアウォールでネットワークが制限されている環境:

bash
# ネットワークが遅い・制限されている環境
claude -w offline-task

# v2.1.75以前:git fetch がタイムアウトするまで待つ可能性
# v2.1.76:ローカルのgit refsで十分な場合はfetchをスキップ
#   ネットワーク待ちなしでワークツリーが作成される

サブエージェントでのワークツリー利用

サブエージェントがワークツリー分離を使用する場合もパフォーマンスが向上します:

# サブエージェントにワークツリー分離を指示
あなた: このタスクをサブエージェントで並列処理して。ワークツリーを使って

# 各サブエージェントのワークツリー作成が高速化
# → 並列タスクの開始までの待ち時間が短縮

注意点

  • 初回fetchは必要: リモートブランチの情報がローカルに一度もfetchされていない場合は、従来通り git fetch が実行されます
  • 最新性のトレードオフ: fetchをスキップすることで、ローカルのリモート参照が若干古い可能性があります。最新のリモート状態が必要な場合は、事前に git fetch を手動で実行してください
  • sparse-checkoutとの併用: v2.1.76で追加された worktree.sparsePaths 設定と組み合わせることで、大規模リポジトリでのワークツリー起動をさらに高速化できます
  • ワークツリーの自動クリーンアップ: v2.1.76では、中断された並列実行後に残されたワークツリーが自動的にクリーンアップされる改善も含まれています

関連情報