Skip to content

原文(日本語に翻訳)

  • Worktreeクリーンアップが git worktree remove 失敗時に rm -rf へのフォールバックを行わなくなりました。.gitignore されたファイルや作業中のファイルの消失を防ぎます

原文(英語)

  • Worktree cleanup no longer falls back to rm -rf when git worktree remove fails, 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 以前):

  1. git worktree remove 実行 → 失敗
  2. rm -rf で強制削除 → .gitignore ファイルも含めてすべて消失

新しい動作(v2.1.143 以降):

  1. git worktree remove 実行 → 失敗
  2. エラーを報告して停止 → ファイルは保持される

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が一覧に表示されている場合は、手動でクリーンアップしてください
  • この変更はユーザーデータの保護を優先したものです。クリーンアップが不完全な場合でも、データ損失よりも安全です

関連情報