テクノロジー · 実用ガイド

Git の「pathspec did not match」は、まず引数の種類を特定する

失敗した引数がローカルブランチ、リモートブランチ、コミット、追跡済みパスのどれかを証明してから操作します。

オリジナル概念図:失敗した引数をローカル、リモート、コミット、追跡済みパスに分類する。
Watch at Ease オリジナルイラスト:修正前に引数を分類する。 Watch at Ease

「pathspec did not match any file(s) known to git」というメッセージだけでは、ブランチ、コミット、追跡済みパスのどれを意図したか分かりません。まず元のコマンドとリポジトリ状態を保存します。

このガイドは fetch、ブランチ作成、restore、reset、clean より前に、ref、オブジェクト、インデックス、tree を読み取り専用で確認します。ルートや対象が不明なら停止します。

リポジトリと元のコマンドを固定する

コマンド全体、エラー、作業ディレクトリ、綴り、引用符を保存します。ref やファイルを変える前に git rev-parse --show-toplevel、git status --short --branch、git remote -v、git --version を記録します。

git reset --hard、git clean、広い fetch、推測によるブランチ作成から始めないでください。証拠を消したり、意図を解決せずエラーだけ隠したりします。

引数が何を表すはずか決める

引数の想定種類を一つ書きます。既存ローカル、リモート、新規、コミットまたはタグ、追跡済みパスです。checkout は複数モードを持ち、refs、index、tree、-- で意味が変わります。

これは仮説であり修正ではありません。ブランチ風の名前は存在を、ファイル風の名前は追跡を、短いハッシュはローカルオブジェクトを証明しません。

ローカルとリモートのブランチを証明する

ローカルは git show-ref --verify refs/heads/NAME と git branch --all --no-color で確認します。リモートは git ls-remote --heads REMOTE NAME で変更せず照会し、状態を記録します。

リモートだけならその ref を正確に fetch して追跡ブランチを作ります。新規なら START を証明後に git switch -c NAME START を使います。作成を診断の代用にしません。

checkout 前にコミットやタグを証明する

git rev-parse --verify --end-of-options ARG^{commit} で現在のオブジェクトデータベースにあるコミットか確認します。失敗はローカルで解決不能という意味だけで、どの remote にあるかは示しません。

fetch 前に remote ref、tag、PR ref、submodule 記録、別リポジトリなど出所を特定します。最小の確認済み ref だけ取得します。

インデックスまたは別の tree でパスを証明する

git ls-files --error-unmatch -- PATH で index を変更せず確認します。別の tree は git ls-tree -r --name-only TREE -- PATH で調べ、大小文字や区切り、相対表記、shell 展開を確認します。

パスを意図するなら git restore --source=TREE -- PATH のように -- を置きます。古い手順では git checkout TREE -- PATH を使い、パス解釈を固定します。

証拠を一つの限定操作へ結び付ける

既存ローカルへ切替、新規は確認済み起点から作成、リモートだけなら正確に取得して追跡、コミットは意図した時だけ detached checkout、追跡済みパスは -- 付きで復元します。

どこにもなければ、文書、チケット、CI 変数、スクリプトなど名前の出所へ戻ります。不在が結論です。submodule、sparse checkout、shallow clone は別に調べます。

結果を検証しロールバック証拠を残す

修正した明示コマンドを実行し、git status --short --branch、git rev-parse --verify HEAD、必要な branch または path の証拠を再確認します。

作成 ref、取得 ref、復元パス、以前の HEAD、コマンドを記録します。固有作業がないと証明してから誤作成ブランチを削除し、確認済み tree からだけ復元します。

オリジナル概念図:証明済み状態を限定操作と検証へ結び付ける。
Watch at Ease オリジナルイラスト:各状態を一つの検証可能な操作へ対応させる。 Watch at Ease