- Git
pathspec did not match anyの直し方|git
error: pathspec 'feature/login' did not match any file(s) known to git は、git が、指定した名前を「ブランチ」としても「ファイル」としても見つけられなかったときのエラーです。 pathspec は「ファイルのパスの指定」という意味です。
git checkout は、ブランチの切り替えと、ファイルを元に戻す作業の両方に使います。 ブランチ名が見つからないと、ファイル名として探し、それも無いのでこのエラーになります。
| どのコマンドで出たか | よくある原因 | 直し方 |
|---|---|---|
git checkout ブランチ名 |
リモートのブランチを、まだ取ってきていない | git fetch してから checkout |
git checkout ブランチ名 |
名前の打ち間違い・大文字小文字の違い | git branch -a で正しい名前を確かめる |
git checkout -- ファイル・git restore |
まだ一度も add していないファイル | 戻す元が無い。git status で確かめる |
git commit -m 'メッセージ'(Windows の cmd) |
' が引用符として扱われず、メッセージが分かれる |
" で囲む |
git add ファイル |
名前の間違い・今いるフォルダからのパスの間違い | git status に表示されたパスで指定 |
確認環境:git 2.43.0(Linux)。リモートのリポジトリと、2つのクローンを作って再現しました(確認日 2026年10月11日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「pathspec did not match anyの直し方|git」
原因① リモートのブランチを、まだ fetch していない(一番多い)
同僚が feature/login ブランチを push したあと、自分のクローンで切り替えようとしました。
$ git checkout feature/login
error: pathspec 'feature/login' did not match any file(s) known to git
$ git switch feature/login
fatal: invalid reference: feature/login
$ git branch -r
origin/HEAD -> origin/main
origin/main ← origin/feature/login がまだ無い
自分のクローンは、リモートに新しいブランチができたことを、まだ知りません。 git fetch で、リモートの情報を取ってきます。
$ git fetch
$ git checkout feature/login
Switched to a new branch 'feature/login'
branch 'feature/login' set up to track 'origin/feature/login'.
fetch のあとは、同じコマンドで切り替えられました。 git の公式ドキュメントでは、指定したブランチが手元に無くても、同じ名前のブランチが1つのリモートにだけあれば、そのリモートのブランチを追跡するブランチを作って切り替える、と説明されています。fetch と pull の違いは、既存の記事「git fetchとpullの違い|図解とpull --rebaseの使い分け」で扱っています。
git switch では、エラー文が違う
| コマンド | fetch していないときのエラー |
|---|---|
git checkout feature/login |
error: pathspec 'feature/login' did not match any file(s) known to git |
git switch feature/login |
fatal: invalid reference: feature/login |
git switch はブランチの切り替えだけをするコマンドなので、ファイル名として探さず、「そのブランチは無い」と表示されます。 原因は同じです。
原因② 名前の打ち間違い・大文字小文字
| 打った名前 | 結果 |
|---|---|
featur/login(1文字足りない) |
pathspec のエラー |
Feature/Login(大文字) |
pathspec のエラー |
feature/login |
切り替えられた |
ブランチ名は大文字小文字を区別しました。 git branch -a で、手元とリモートのブランチの一覧を表示し、正しい名前をコピーします。
git branch -a # 手元とリモートのブランチの一覧
git branch -r | grep login
原因③ まだ追跡していないファイルを、元に戻そうとした
new.txt を作ったばかりで、まだ一度も add していない状態で試しました。
| コマンド | 結果 |
|---|---|
git checkout -- new.txt |
error: pathspec 'new.txt' did not match any file(s) known to git |
git restore new.txt |
error: pathspec 'new.txt' did not match any file(s) known to git |
git rm new.txt |
fatal: pathspec 'new.txt' did not match any files |
checkout --・restore は「git に記録されている版に戻す」コマンドなので、一度も記録していないファイルは戻せません。 公式ドキュメントでも、git checkout -- ファイル はインデックス(add した状態)の版でファイルを置き換える、と説明されています。まだ追跡していないファイルを消したいときは、ふつうに削除するか、git clean を使います。
原因④ Windows の cmd で、-m のメッセージが分かれる
C:\> git commit -m 'fix bug'
Microsoft の C++ のドキュメントでは、Windows のプログラムの引数は空白で区切られ、"(ダブルクォート)で囲んだ部分が1つの引数になると説明されています。'(シングルクォート)で囲む決まりは書かれておらず、コマンドプロンプト(cmd.exe)では 'fix と bug' の2つに分かれます。 確認環境で、同じように引数を2つに分けて渡すと、次のエラーになりました。
$ git commit -m "'fix" "bug'"
error: pathspec 'bug'' did not match any file(s) known to git
bug' がコミットするファイルの名前として扱われています。 メッセージは "(ダブルクォート)で囲みます。
git commit -m "fix bug"
原因⑤ git add のパスが違う
| 状況 | 結果 |
|---|---|
git add READM.md(打ち間違い) |
fatal: pathspec 'READM.md' did not match any files |
src フォルダに入ってから git add src/a.txt |
warning: could not open directory 'src/src/' と fatal: pathspec 'src/a.txt' did not match any files |
.gitignore で除外したファイル |
The following paths are ignored by one of your .gitignore files:(pathspec のエラーではない) |
git add のパスは、今いるフォルダから見たパスです。src の中にいるなら git add a.txt と書きます。git status に表示されたパスを使うと間違えにくくなります。
error と fatal の違い
| 表示 | 出たコマンド(確認環境) |
|---|---|
error: pathspec ... did not match any file(s) known to git |
git checkout・git restore・git commit |
fatal: pathspec ... did not match any files |
git add・git rm |
どちらも「その名前のファイル(ブランチ)が見つからない」という意味です。 表示の違いは、コマンドの違いです。
リモートが2つあるとき
origin と upstream の両方に feature/login があるとき、git checkout feature/login は次のように止まりました。
fatal: 'feature/login' matched multiple (2) remote tracking branches
どちらのリモートのブランチか決められないためです。 git switch -c feature/login --track origin/feature/login のように、リモートを指定すると切り替えられました。公式ドキュメントによると、設定 checkout.defaultRemote=origin で、優先するリモートを決めることもできます。
確認の手順(チェックリスト)
| 順番 | 確認すること | 方法 |
|---|---|---|
| 1 | ブランチの切り替えか、ファイルの操作か | 打ったコマンド |
| 2 | リモートの最新を取ってきたか | git fetch |
| 3 | 正しい名前か | git branch -a |
| 4 | 追跡しているファイルか | git status、git ls-files |
| 5 | 今いるフォルダからのパスか | git status の表示に合わせる |
| 6 | Windows の cmd で ' を使っていないか |
" で囲む |
よくある質問
Q. fetch したのに、まだ切り替えられません。
A. git branch -r にそのブランチがあるかを確かめます。無ければ、相手がまだ push していないか、別のリモートに push しています。あるのに切り替えられないなら、名前の打ち間違いか、上の「リモートが2つあるとき」に当たります。
まとめ
- git が、ブランチとしてもファイルとしても見つけられなかったエラー
- 一番多いのは リモートのブランチを fetch していない。
git fetchしてから checkout - まだ add していないファイルは、
checkout --・restoreで戻せない - Windows の cmd では
-m 'msg'が分かれる。"で囲む git switchではinvalid referenceと表示される
参考・出典
確認日はいずれも 2026年10月11日です。
- Git ドキュメント「git-checkout」:https://git-scm.com/docs/git-checkout
- Microsoft Learn「main function and command-line arguments」:https://learn.microsoft.com/en-us/cpp/cpp/main-function-command-line-args
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「pathspec did not match anyの直し方|git」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。