fetchしていないとかそういう話ではない。
>git checkout [ブランチ名]
error: pathspec '[ブランチ名]' did not match any file(s) known to git.
かなり古いディレクトリ(サイズが大きいので再cloneしたくなかった)の上に色々弄ったので条件が確かでないが、恐らく下の操作で解決した。
> git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
> git fetch origin
> git checkout [ブランチ名]
参考:https://stackoverflow.com/questions/35235232/check-out-a-branch-that-exists-in-a-remote
追記
single-branchでcloneした(shallow cloneの場合などデフォルトでそうなっている)リポジトリだとremote.origin.fetch
にそのブランチしか設定されず、この様にfetchしても虚無という事になるようだ。