gitでchekoutできずerror: pathspec ‘<ブランチ名>‘ did not match any file(s) known to git.となった場合の対処方法

gitで新しくcheckoutしようとした場合に
>git checkout test
error: pathspec 'test' did not match any file(s) known to git.
というエラーになりました。
どうやらまだfetchできていないブランチがあるためブランチ名を認識できていないようです。
なのでブランチ名を指定してfetchしてみます。
>git fetch origin test

From https://github.com/XXXXXX
 * branch            test       -> FETCH_HEAD
一見成功したようにも見えるのですが、この状態でcheckoutしてもどうもエラーは変わりません。
>git branch -r
  origin/HEAD -> origin/dev
  origin/dev
  origin/master
リモート追跡ブランチを確認しても追加されていませんでした。
次に、リモート名のoriginを指定せずにfetchしてみると
>git fetch

From https://github.com/XXXXXX
 * [new branch]      test       -> origin/test
>git branch -r
   origin/HEAD -> origin/dev
   origin/dev
   origin/master
   origin/test
testのリモート追跡ブランチが無事追加されていました。
そしてcheckoutもできました。
どうやら原因は、
余計なブランチまでfetchしたくないので
configでfetchを指定するようにしていたのですが、
>cat .git/config
  [remote "origin"]
  url = XXXXX.git
  fetch = +refs/heads/dev:refs/remotes/origin/dev
  fetch = +refs/heads/test:refs/remotes/origin/test
  fetch = +refs/heads/master:refs/remotes/origin/master

  [branch "dev"]
  remote = origin
  merge = refs/heads/dev

  [branch "test"]
  remote = origin
  merge = refs/heads/test
  [branch "master"]
  remote = origin
  merge = refs/heads/master
ここで
fetch = +refs/heads/*:refs/remotes/origin/*
ではなく、ブランチ名を直指定している場合は、
fetchする場合にoriginまで指定せず、オプションなしでfetchを一度実行する必要がありそうです。
開発日記
この記事の投稿者
AKI

ソフトウェアエンジニア歴10年以上、業務系システムからゲーム開発まで幅広く経験し
現在はフリーランスプログラマとして従事している。
得意言語: PHP, JavaScript, Java, C#(Unity)

フォローする
フォローする
スポンサーリンク
WoW creators
タイトルとURLをコピーしました