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を一度実行する必要がありそうです。