Claude Code のエラー

Error: Can only use --worktree in a git repository

結論

--worktree は git のワークツリーを作る機能。git 管理下でないディレクトリでは使えない。

確認した版 Claude Code v2.1.259
確認日 2026年9月3日
文言の照合 Claude Code v2.1.259
最終更新 2026年9月3日
根拠 実機で確認

エラー文字列

Claude Code
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.

何が起きているか

--worktreegit のワークツリー(同じリポジトリの別チェックアウト)を作って、その中で作業させる機能です。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-toplevelfatal: 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.jsonWorktreeCreate フックを設定すると、 ワークツリーの作成を自分の手順に置き換えられます。

git 以外でも --worktree を使う道は用意されています。 ただし作成処理は自分で書く必要があります。

5. そもそもワークツリーが要るのか確認する

--worktree は「作業を今のチェックアウトから隔離したい」ときの機能です。 隔離が不要なら、付けずに実行すれば済みます。

claude -p "..."

再発防止

  • CI では リポジトリのルートに cd してから実行する。ステップごとに作業ディレクトリが変わる
  • --worktree を使う前に git rev-parse --show-toplevel が通ることを確認する
  • git 以外を使っているなら WorktreeCreate フックを設定するか、--worktree を使わない

この手順で直りませんでしたか?

環境を添えて報告いただければ、追加の原因を検証してこのページに反映します。

エラーを報告する