1. ホーム
  2. ギット

[解決済み】Gitのブランチ名でスラッシュを使用する方法

2022-04-18 05:01:18

質問

ある 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 でスラッシュ文字を使用してブランチを作成するにはどうすればよいですか?

どのように解決するのですか?

ブランチ 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

cannot create directory"エラーに相当するものが出ていますね。

スラッシュを含むブランチがある場合、そのブランチは ディレクトリの階層は .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内部の制限事項です。