Skip to content

原文(日本語に翻訳)

claude -w <name> が、前のセッションのworktreeクリーンアップで残った古いディレクトリが原因で「already exists」エラーになる問題を修正しました。

原文(英語)

Fixed claude -w <name> failing with "already exists" after a previous session's worktree cleanup left a stale directory

概要

claude -w <name> でworktreeを作成しようとした際、以前のセッションのクリーンアップ処理が完全に完了せず、古いディレクトリが残っている場合に「already exists」エラーが発生していました。このアップデートにより、古いディレクトリが存在する場合でも適切に処理され、worktreeが正常に作成されるようになりました。

基本的な使い方

bash
# worktreeを作成(古いディレクトリが残っていても動作するようになった)
claude -w feature-branch

# 以前はこのエラーが発生することがあった:
# Error: Directory 'feature-branch' already exists
# → 前のセッションの残骸が原因

# 修正後: 古いディレクトリを検出して適切に処理

実践例

安全なworktree管理

bash
# 機能開発のためのworktreeを作成
claude -w feature/user-authentication

# 作業完了後のクリーンアップ
# 通常は自動でクリーンアップされるが、クラッシュ時など残る場合がある

# 次回同じブランチを作成する際(修正後)
claude -w feature/user-authentication
# → 古いディレクトリを検出して再利用または再作成

worktreeのトラブルシューティング

bash
# 残存するworktreeディレクトリの確認
git worktree list

# 古いworktreeを手動でクリーンアップ(必要な場合)
git worktree prune

# worktreeディレクトリの確認
ls -la ~/.claude/worktrees/ 2>/dev/null || \
ls -la /tmp/claude-worktrees/ 2>/dev/null

# 修正後は自動的に処理されるため、手動クリーンアップは不要

複数のworktreeを使った並行開発

bash
#!/bin/bash
# 複数のworktreeで並行開発するスクリプト

# 機能ブランチのworktreeを作成
create_feature_worktree() {
  local feature_name="$1"
  
  echo "worktreeを作成中: $feature_name"
  
  # 修正後: 古いディレクトリがあっても安全に作成できる
  if claude -w "$feature_name"; then
    echo "✅ worktreeを作成しました: $feature_name"
  else
    echo "❌ worktreeの作成に失敗しました"
    # 手動でのフォールバック
    git worktree prune
    git worktree add "../$feature_name" -b "$feature_name"
  fi
}

# 複数の機能ブランチを作成
create_feature_worktree "feature/payment"
create_feature_worktree "feature/notification"
create_feature_worktree "feature/dashboard"

CI環境でのworktree使用

yaml
# .github/workflows/parallel-review.yml
name: Parallel Code Review

jobs:
  review:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        feature: [auth, api, ui]
    steps:
      - name: コードをチェックアウト
        uses: actions/checkout@v3
        
      - name: Claude でworktreeを作成してレビュー
        run: |
          # 修正により古いディレクトリがあっても動作する
          claude -w "review-${{ matrix.feature }}" \
            "このディレクトリのコードをレビューして"

注意点

  • このバグはworktreeのクリーンアップが途中で中断された場合(セッションクラッシュなど)に発生していました
  • 修正後は古いディレクトリを検出し、適切に処理(再利用または削除して再作成)します
  • git worktree prune コマンドで手動でのクリーンアップも引き続き使用できます
  • worktreeの保存場所は設定によって異なります(~/.claude/worktrees/ またはプロジェクトディレクトリ)
  • 複数のユーザーが同じ名前のworktreeを作成する場合は、名前の衝突に注意してください

関連情報