「git checkout -b branch-name origin/branch-name」でリモートブランチをチェックアウトしようとしたら、ブランチ名に「&」が入っていて上手くいかず、5分くらい悩んだ。
あまり無いケースではあると思いますが、一応解決策を書いておくことにしました。
事象
リモートに「sugar&salt」みたいなブランチがあるとします。それをターミナル操作でチェックアウトしようとすると上手くいきません。どうなるかというと、以下のような感じになります。
$ git checkout -b sugar&salt origin/sugar&salt
[1] 8210
[2] 8211
-bash: salt: command not found
-bash: salt: command not found
「&」が入っているせいで、&以降のブランチ名がbashコマンドと見なされてしまっているようですね。
ちなみに上のコマンドを実行すると、リモートブランチの参照に失敗し、現在いるブランチから「sugar」というブランチが切られる結果になります。
対策
ブランチ名をダブルクォーテーションで囲む
具体的には以下のようにすれば良い。
$ git checkout -b "sugar&salt" "origin/sugar&salt"
こうすることで、「&」がbashコマンドの一部と見なされずに済むので、ターミナル上でも操作が上手くいきます。
所感
ブランチ名に記号を混ぜるのはやめた方が良いということを知れてよかったです。朝の貴重な時間が・・。