原文(日本語に翻訳)
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を作成する場合は、名前の衝突に注意してください