gitのブランチ名にスラッシュを含めるときの罠

ブランチ名にはスラッシュを含めることができるわけだけど、ちょっとはまった。

$ git branch hoge

$ git branch hoge/fuga
error: unable to resolve reference refs/heads/hoge/fuga: Not a directory
fatal: Failed to lock ref for update: Not a directory

という感じで、hogeブランチつくった後にhoge/fugaブランチをつくろうとするとエラる。なんでかというとhogeというブランチ名を作った時点で .git/refs/heads/hoge というファイルができていて、hoge/fuga ブランチをつくるためには .git/refs/heads/hoge/fuga というファイルをつくる必要があるので、すでに hoge があるよってことでエラるんだと思う(たぶん)。

逆もしかり。

$ git branch hoge/fuga

$ git branch hoge
error: there are still refs under 'refs/heads/hoge'
fatal: Failed to lock ref for update: Is a directory