--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では、中断された並列実行後に残されたワークツリーが自動的にクリーンアップされる改善も含まれています