【Git】error: pathspec did not match any file(s) known to git の原因と解決方法|ブランチ・タグ・初期コミット対策まで

【Git】error: pathspec 'ブランチ名' did not match any file(s) known to git. エラーが出たときの原因と対処方法 Git

Git で git checkout ブランチ名git switch ブランチ名 を実行したとき、「error: pathspec 'xxx' did not match any file(s) known to git」というエラーが出て切り替えられないことがあります。

このエラーは Git が指定した名前(ブランチ・タグ・コミットハッシュ)を見つけられないときに発生します。原因はいくつかあるため、状況に合わせた対処が必要です。この記事では 5つの原因と解決方法 を順に解説します。

この記事でわかること

  • 「pathspec did not match」エラーの意味
  • 原因1:ブランチ名のタイプミス・大文字小文字の違い
  • 原因2:リモートブランチをフェッチしていない
  • 原因3:初期コミットが存在しない(空のリポジトリ)
  • 原因4:タグ操作時の注意点
  • 原因5:ブランチ自体が存在しない(新規作成が必要)
スポンサーリンク

エラーの意味

error: pathspec 'develop' did not match any file(s) known to git

このエラーは、Git が指定した名前(ブランチ名・タグ名・コミットハッシュなど)を解決できなかったときに発生します。

主に git checkoutgit switchgit restore を実行したときに見られます。

原因1:ブランチ名のタイプミス・大文字小文字の違い

最も多い原因は ブランチ名のスペルミス大文字小文字の違い です。Git のブランチ名は大文字と小文字を区別します(Mainmain は別ブランチ)。

対処方法:存在するブランチを確認する

# ローカルブランチの一覧を確認
git branch

# リモートを含む全ブランチを確認
git branch -a

# 出力例
* main
  develop
  feature/login
  remotes/origin/main
  remotes/origin/develop

一覧に表示されたブランチ名と、入力したブランチ名が一致しているか確認してください。

大文字小文字の違いに注意
git checkout Developgit checkout develop は別ブランチを指します。GitHub では main がデフォルトブランチですが、古いリポジトリでは master の場合があります。

原因2:リモートブランチをフェッチしていない

チームメンバーが作成したブランチや、GitHub 上で作成したブランチは、git fetch を実行しないとローカルに反映されません

対処方法:フェッチしてからチェックアウト

# 最新のリモート情報を取得
git fetch

# または特定のリモートからフェッチ
git fetch origin

# 全リモートからフェッチ
git fetch --all
# フェッチ後にリモートブランチを確認
git branch -a

# リモートブランチからローカルブランチを作成してチェックアウト
git checkout -b feature/login origin/feature/login

# または(Git 2.23以降)
git switch feature/login
git switch ブランチ名 は自動でリモートを探してくれる
Git 2.23 以降では git switch がリモートブランチを自動的に探して追跡ブランチを作成してくれます。git checkout -b より簡単に使えます。ただし Git のバージョンが古い場合は checkout -b を使ってください。

原因3:初期コミットがない(空のリポジトリ)

git init 直後でコミットが1件もない状態では、ブランチ自体が存在しないため、git checkout はエラーになります。

# 空のリポジトリでの確認方法
git log
# → fatal: your current branch 'main' does not have any commits yet

# 解決: 最初のコミットを作成する
git add .
git commit -m "Initial commit"
新規リポジトリで発生しやすい
git init 後、何もコミットしないうちに git checkout -b develop などを実行するとこのエラーになります。最初のコミットを作成してからブランチ操作を行ってください。

原因4:タグ・コミットハッシュ操作時の注意

タグやコミットハッシュを指定して git checkout する場合も同様のエラーが発生します。タグが存在しない・フェッチされていないケースです。

# タグの一覧を確認
git tag

# リモートのタグをフェッチ
git fetch --tags

# タグへのチェックアウト
git checkout v1.0.0
# コミットハッシュで確認
git log --oneline -10

# 特定コミットへのチェックアウト(detached HEAD 状態)
git checkout a1b2c3d

原因5:ブランチが存在しない(新規作成が必要)

切り替えたいブランチがローカルにもリモートにも存在しない場合は、-b オプションで新規作成します。

# 新しいブランチを作成してチェックアウト
git checkout -b feature/new-feature

# または(Git 2.23以降)
git switch -c feature/new-feature

# 特定のブランチから分岐して新規ブランチを作成
git checkout -b feature/new-feature origin/develop

状況別の対処フローまとめ

状況 確認コマンド 解決方法
ブランチ名を間違えた git branch -a で確認 正しいブランチ名で再実行
リモートブランチが見えない git branch -r で確認 git fetch 後に再試行
空のリポジトリ git log でコミットなし 先に git commit を実行
タグが存在しない git tag で確認 git fetch --tags 後に再試行
ブランチを新規作成したい git checkout -b ブランチ名

よくある質問

Q. git fetch と git pull の違いは何ですか?
A. git fetch はリモートの情報を取得するだけで、ローカルのブランチは変更しません。git pullgit fetch + git merge(または git rebase)をまとめて行います。ブランチの存在確認だけなら git fetch の後に git branch -a で確認してください。
Q. git switch と git checkout の違いは?
A. git switch は Git 2.23 で追加された新しいコマンドで、ブランチの切り替えに特化しています。git checkout はブランチ切り替え・ファイルの復元・コミット参照など多用途ですが、その分わかりにくい挙動があります。新しいバージョンの Git では git switch の使用が推奨されています。
Q. git branch -a の出力に remotes/origin/xxx はあるのにチェックアウトできません。
A. git checkout ブランチ名 とスラッシュなしで試してください。remotes/origin/feature/login が表示されている場合、git switch feature/login または git checkout -b feature/login origin/feature/login で作成できます。Git 2.23 以降では git switch feature/login だけで自動的にリモート追跡ブランチを作ってくれます。
Q. git clone したばかりなのにブランチが見えません。
A. git clone はデフォルトブランチ(通常 main または master)しか作成しませんが、リモートブランチの情報は取得しています。git branch -aremotes/origin/xxx として確認できます。git switch ブランチ名 または git checkout -b ブランチ名 origin/ブランチ名 でローカルブランチを作成してください。
Q. ブランチ名に特殊文字やスペースが含まれていますが大丈夫ですか?
A. ブランチ名にスペースは使えません。スラッシュ(feature/login)・ハイフン(feature-login)・アンダースコア(feature_login)は使えます。スペースを含む場合はシェルのクォーテーション(git checkout 'branch name')で囲む必要がありますが、そもそもブランチ名にスペースを含むのは避けることを推奨します。

まとめ

「pathspec did not match」エラーの解決フロー

  • まず git branch -a でブランチ名を確認(タイプミス・大文字小文字)
  • リモートブランチが見えない → git fetch を実行
  • 空のリポジトリ → 最初の git commit を実行してからブランチ操作
  • タグが見えない → git fetch --tags でタグを取得
  • ブランチを新規作成 → git checkout -b ブランチ名 または git switch -c ブランチ名

あわせて読みたい