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期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?