for-each-refを使えばいいんじゃないだろうかということで、サクッと作ってみた。方針としては以下のような感じ。show-refによりrefspecを参照することによりリモートブランチかどうかを判定し、リモートのブランチの場合は-bでブランチを作成してdetachを防止する。これだけだとすでに同名のローカルブランチが存在した場合エラーになるので、エラーメッセージを表示しつつ、既存のローカルブランチをチェックアウトする。この場合、リモートブランチとローカルブランチが別のものを指している場合等では意図するものとは別のものをチェックアウトしてしまう可能性があるけど、レアケースなのでメッセージを出すことにより許容範囲内ということにした。意図せずorigin/branch_aをトラッキングしているbranch_aをチェックアウトしてしまう。