在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 branch
或git 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
。