どこかの人気のある Git プロジェクトのブランチに「feature/xyz」のようなパターンがあるのを見たことがあると思います。
しかし、スラッシュ文字を使用してブランチを作成しようとすると、エラーが発生します。
$ git branch labs/feature
error: unable to resolve reference refs/heads/labs/feature: Not a directory
fatal: Failed to lock ref for update: Not a directory
(私の最初の試みでも同じ問題がありました):
$ git checkout -b labs/feature
Git でスラッシュ文字を使用してブランチを作成するにはどうすればよいでしょうか?
ベストアンサー1
labs
ブランチがすでに存在していないことを確認してください(このスレッド)?
同じ名前のファイルとディレクトリの両方を持つことはできません。
基本的に、git で次の操作を実行しようとしています:
% cd .git/refs/heads % ls -l total 0 -rw-rw-r-- 1 jhe jhe 41 2009-11-14 23:51 labs -rw-rw-r-- 1 jhe jhe 41 2009-11-14 23:51 master % mkdir labs mkdir: cannot create directory 'labs': File exists
「ディレクトリを作成できません」というエラーと同等のエラーが発生します。
スラッシュを含むブランチがある場合、そのブランチは の下にディレクトリ階層として保存されます.git/refs/heads
。
は既存のブランチlabs
であってはならないことに注意してください。ドゥルガノフ指摘するコメント:
git switch -c 19023-commerce/19033-commerce-view 19023-commerce
# Fails with:
fatal: cannot lock ref 'refs/heads/19073-commerce-view/99999-test-branch':
'refs/heads/19073-commerce-view' exists;
cannot create 'refs/heads/19073-commerce-view/99999-test-branch'
「git push: refs/heads/my/subbranch
存在するが、作成できない「:」
- ブランチ b が存在する場合、b/anything という名前のブランチは作成できません。
- 同様に、ブランチ dev/b が存在する場合、dev/b/c は作成できません。
これは git の内部制限です。