Error: Can only use --worktree in a git repository
--worktree は git のワークツリーを作る機能。git 管理下でないディレクトリでは使えない。
エラー文字列
Error: Can only use --worktree in a git repository
⚠️ 標準エラーに出て、終了コードは 1 です。 メッセージには判定に使ったディレクトリのパスがそのまま出ます。
Error: Can only use --worktree in a git repository, but C:\work\sample is not a git repository.
Configure a WorktreeCreate hook in settings.json to use --worktree with other VCS systems.
何が起きているか
--worktree は git のワークツリー(同じリポジトリの別チェックアウト)を作って、その中で作業させる機能です。git が前提なので、git 管理下でないディレクトリでは成立しません。
⭐ 判定は「いまいるディレクトリ」に対して行われます。 リポジトリの中にいるつもりで、実際は別の場所から起動している場合に出ます。
v2.1.238 で実測した対応表です。
| 実行した場所 | 出るもの |
|---|---|
| git 管理下でない | Error: Can only use --worktree in a git repository, but <パス> is not a git repository. |
| git 管理下(正常) | ワークツリーが作られて処理が進む |
.git はあるが壊れている |
Error creating worktree: Failed to resolve base branch "HEAD": git rev-parse failed |
⚠️ 3行目が出た場合はこのページではありません。 git は認識できていて、基点のブランチを解決できていない状態です。
直し方
1. どこで実行しているかを確認する
メッセージに出ているパスが、意図した場所かを見てください。
Windows(PowerShell)
Get-Location
git rev-parse --show-toplevel
macOS / Linux
pwd
git rev-parse --show-toplevel
⚠️ git rev-parse --show-toplevel が fatal: not a git repository を返すなら、そこは git 管理下ではありません。
2. リポジトリのルートで実行する
cd "$(git rev-parse --show-toplevel)"
claude --worktree feature-x -p "..."
Windows(PowerShell)
Set-Location (git rev-parse --show-toplevel)
claude --worktree feature-x -p "..."
3. まだ git 管理下でないなら、初期化する
⚠️ コミットが1つも無いと、ワークツリーの基点が決まらず別のエラーになります。 初期化したら最初のコミットまで済ませてください。
git init
git add -A
git commit -m "初回"
4. git 以外のバージョン管理を使っている場合
メッセージの2行目が答えです。settings.json に WorktreeCreate フックを設定すると、
ワークツリーの作成を自分の手順に置き換えられます。
⭐ git 以外でも --worktree を使う道は用意されています。 ただし作成処理は自分で書く必要があります。
5. そもそもワークツリーが要るのか確認する
--worktree は「作業を今のチェックアウトから隔離したい」ときの機能です。
隔離が不要なら、付けずに実行すれば済みます。
claude -p "..."
再発防止
- CI では リポジトリのルートに
cdしてから実行する。ステップごとに作業ディレクトリが変わる --worktreeを使う前にgit rev-parse --show-toplevelが通ることを確認する- git 以外を使っているなら
WorktreeCreateフックを設定するか、--worktreeを使わない