在Git分支名称中使用斜线字符

我很确定我看到在一个受欢迎的Git项目中的分支有一个像“function/ xyz”模式。

但是,当我尝试使用斜杠字符创build分支时,出现错误:

$ 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中用斜线字符创build分支?

你确定分支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 

你得到了“无法创build目录”错误的等价物。
当你有一个斜线的分支时,它将被存储在.git/refs/heads下的一个目录结构中。

可以有分层的分支名称(带斜线的分支名称)。 例如在我的仓库中,我有这样的分支。 一个需要注意的是,你不能在仓库中同时拥有分支'foo'和分支'foo / bar'。

你的问题不是用斜线创build分支的名字。

 $ git分支foo / bar
错误:无法解决参考文献/头/实验室/function:不是一个目录
致命:无法locking参考更新:不是一个目录

上面的错误消息提到“实验室/function”分支,而不是“foo / bar”(除非它是copy'n'paste中的错误,即你编辑了部分会话)。 git branchgit rev-parse --symbolic-full-name HEAD的结果是什么git rev-parse --symbolic-full-name HEAD

如果您已经有一个基本名称的分支,有时会出现这个问题。

我试过这个:

 git checkout -b features/aName origin/features/aName 

不幸的是,我已经有了一个名为features的分支,并且我得到了提问者的例外。

删除分支features解决了问题,上述命令工作。

就我而言,我忘记了已经有一个未使用的labs分支。 删除它解决了这个问题:

 git branch -d labs git checkout -b labs/feature 

说明:

每个名称只能是一个父分支一个正常的分支,而不是两个。 这就是为什么分支labs labs/feature不能同时存在的原因。

这种行为的原因是分支存储在文件系统中,在那里你也不能有同一级别的文件labs和目录labs

我可能是错的,但是我认为斜线只在分支名称中出现,当它们与远程仓库相关时,例如origin/master