我很确定我在一个流行的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
Run Code Online (Sandbox Code Playgroud)
同样的问题(我最初的尝试):
$ git checkout -b labs/feature
Run Code Online (Sandbox Code Playgroud)
如何使用斜杠字符在Git中创建分支?
Von*_*onC 210
你确定分支labs
还不存在(如在这个帖子中)?
您不能同时拥有文件和具有相同名称的目录.
你试图让git基本上做到这一点:
Run Code Online (Sandbox Code Playgroud)% 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
.
Jak*_*ski 97
可以使用分层分支名称(带有斜杠的分支名称).例如,在我的存储库中,我有这样的分支.需要注意的是,您不能在存储库中同时拥有分支'foo'和分支'foo/bar'.
您的问题不在于使用名称中的斜杠创建分支.
$ git branch foo/bar error: unable to resolve reference refs/heads/labs/feature: Not a directory fatal: Failed to lock ref for update: Not a directory
上面的错误消息是关于'labs/feature'分支,而不是'foo/bar'(除非它是copy'n'paste中的错误,即你编辑了部分会话).什么是结果git branch
还是git rev-parse --symbolic-full-name HEAD
?
小智 31
如果您已经拥有基本名称的分支,则有时会出现此问题.
我试过这个:
git checkout -b features/aName origin/features/aName
Run Code Online (Sandbox Code Playgroud)
不幸的是,我已经有了一个名为的分支features
,我得到了提问者的例外.
删除分支features
解决了问题,上面的命令工作.
flo*_*ori 29
在我的情况下,我忘了已经有一个未使用的labs
分支.删除它解决了问题:
git branch -d labs
git checkout -b labs/feature
Run Code Online (Sandbox Code Playgroud)
说明:
每个名称只能是父分支或普通分支,而不是两者.这就是为什么树枝labs
,并 labs/feature
在同一时间不能都存在.
出现这种情况的原因是分支存储在文件系统中,您也不能在同一级别拥有文件labs
和目录labs
.
归档时间: |
|
查看次数: |
96364 次 |
最近记录: |