TL;DR
以下のようにshallow cloneしたローカルリポジトリに対し、
git clone --depth 1 <リポジトリURL等>
以下のコマンドを実行すれば指定したブランチがcheckoutできるようになる
git remote set-branches origin <ブランチ名>
git fetch origin <ブランチ名>
※ origin
の箇所は適宜読み替える
少し詳しく
以下のようにshallow cloneしたローカルリポジトリがある
git clone --depth 1 --single-branch -b <ブランチ名> <リポジトリURL等>
このままcheckoutしようとすると以下のようなエラーになる
❯ git checkout master
error: pathspec 'master' did not match any file(s) known to git
何となくfetchすれば良いのでは?と思いやってみるも…
git fetch origin master
この状態でcheckoutしても同じエラーになる
❯ git checkout master
error: pathspec 'master' did not match any file(s) known to git
これを回避するには以下のようにする ※順番が大事
git remote set-branches origin master
git fetch origin master
参考