Gitのpathspec不一致エラー対処法
冒頭まとめ ブランチを切り替えようとして、次のエラーが出ることがあります。 error: pathspec 'feature/login' did not match any file(s) known to git feature/login は、指定した名前の例です。ブランチへ切り替えるつもりでも、エラーにはファイルという言葉が出ます。 まずブランチ名と接続先を確認し、リモートの状態を取得してから切り替えます。git checkout -b feature/login だけで新しく作ると、相手が作ったブランチではなく、現在のコミットから作ってしまうため、先に切り替え元を確認してください。 ブランチ指定なのにファイルのエラーになる理由 git checkout は、ブランチへの切り替えと、ファイルを戻す操作の両方を担当します。公式文書の名前の解釈にも、この2つの用途が説明されています。 指定した名前がコミットやブランチとして見つからず、リモート追跡ブランチからの自動作成もできなければ、ファイルの指定として処理される場合があります。そのファイルにも一致しないと、本件の文言になります。 pathspecは、Gitに渡すファイルやディレクトリなどの対象指定です。エラー文だけでは、ブランチを指定したかったのか、ファイルを指定したかったのかまでは分かりません。最初に実行したコマンドの目的を確認します。 名前とリモート追跡ブランチを確認する ブランチを切り替えたい場合は、まず次を実行します。 git status git remote -v git branch -a git branch -a でローカルのブランチと、remotes/origin/feature/login などのリモート追跡ブランチを確認します。後者は、リモートの状態を手元に記録したものです。GitHubの画面をその場で問い合わせた一覧ではありません。 名前の綴りと、大文字・小文字を含む正確な表記も確認してください。別のリポジトリや、同僚の個人用リポジトリを見ていないかは、git remote -v のURLと照合します。 未コミットの変更がある場合は、その内容も確認します。名前の問題が解消した後、変更の上書きを防ぐために切り替えが止まることもあります。その場合は、本件とは別の停止理由です。 fetchしてから既存ブランチに切り替える 接続先がoriginなら、次でリモートの状態を取得します。origin以外なら実際の名前に置き換えてください。 git fetch origin git branch -r git fetchの公式文書では、引数で取得するブランチを指定しない場合、リモートのfetch設定に従って取得し、リモート追跡ブランチを更新します。 origin/feature/login が確認できたら、次で切り替えます。 git switch feature/login git switchの説明では、ローカルに名前が無くても、条件に合うリモート追跡ブランチがあれば、ローカルブランチを作成して追跡する動作があります。これは、リモートに直接移動して作業する操作ではありません。 同じ名前が複数のリモートにある場合や、取得元を明示したい場合は、ローカルに同名のブランチがまだ無いことを確認して次を使います。 git switch -c feature/login --track origin/feature/login checkoutを使う場合の同等の指定は、次です。 ...