原文(日本語に翻訳)
- Worktreeクリーンアップが
git worktree remove失敗時にrm -rfへのフォールバックを行わなくなりました。.gitignoreされたファイルや作業中のファイルの消失を防ぎます
原文(英語)
- Worktree cleanup no longer falls back to
rm -rfwhengit worktree removefails, preventing loss of gitignored or in-progress files
概要
以前のバージョンでは、git worktree remove が失敗した場合に rm -rf で強制削除するフォールバック動作がありました。この動作は .gitignore されたファイル(ローカルの設定ファイル、ビルドキャッシュ、作業中の一時ファイルなど)や未コミットの変更を消失させるリスクがありました。今回の更新でこのフォールバックが廃止され、より安全なクリーンアップが行われるようになりました。
基本的な使い方
特別な操作は必要ありません。Claude Codeのworktreeクリーンアップ処理が自動的に安全な方法で行われます。
bash
# バックグラウンドセッション終了後のworktreeクリーンアップは
# git worktree remove のみで行われる
# 失敗した場合は rm -rf にフォールバックしない実践例
影響を受けるシナリオ
以前は以下のようなケースでファイルが消失するリスクがありました:
bash
# .gitignoreされたファイルが存在するworktreeディレクトリ
# 例:.env.local、node_modules/(一部)、ビルド成果物など
# git worktree remove が失敗するケース:
# - worktree内に未コミットの変更がある
# - worktree内で他のプロセスが実行中
# - ファイルシステムのロックがある以前の動作(v2.1.143 以前):
git worktree remove実行 → 失敗rm -rfで強制削除 →.gitignoreファイルも含めてすべて消失
新しい動作(v2.1.143 以降):
git worktree remove実行 → 失敗- エラーを報告して停止 → ファイルは保持される
worktreeの手動クリーンアップ
git worktree remove が失敗した場合の対処:
bash
# worktreeの状態を確認
git worktree list
# 未コミットの変更を確認してから削除
cd /path/to/worktree
git status
git stash # または変更をコミット
# その後クリーンアップ
git worktree remove /path/to/worktree
# またはforceオプション(内容を確認した上で)
git worktree remove --force /path/to/worktree注意点
- この変更により、worktreeクリーンアップが失敗してworktreeディレクトリが残る場合があります。その際は手動での確認と削除が必要です
git worktree listで孤立したworktreeが一覧に表示されている場合は、手動でクリーンアップしてください- この変更はユーザーデータの保護を優先したものです。クリーンアップが不完全な場合でも、データ損失よりも安全です