我试图在Ubuntu客户机上的当前分支上创建一个分支。不幸的是,我一直收到这个错误:
git checkout -b origin/feature/IF-53-change-validation-window/Tommaso
fatal: cannot lock ref 'refs/heads/origin/feature/IF-53-change-validation-window/Tommaso':
'refs/heads/origin/branch' exists;
cannot create 'refs/heads/origin/branch/Tommaso'
我尝试了这里建议的git gc --prune=now
link,但一直得到同样的错误。
9条答案
按热度按时间myzjeezk1#
这里的问题看起来像是本地已经存在一个分支
X
,而你试图创建一个新的分支X/Y
。这是行不通的,因为在.git/refs/heads/X
会有一个文件,所以git不能同时创建文件夹X。但是,值得一提的是,分支名称中包含“origin”会引起一些混淆- origin通常是远程仓库的名称。如果运行
git branch
,我希望您会看到名称中包含origin
的本地分支。格式
git checkout X
是以下内容的简写:X
并检查是否存在X
并在本地检查(git checkout -b X origin/X
)要修复当前状态,您可以执行以下操作(see here):
zu0ti5jz2#
这对我很有效:
y1aodyip3#
有时候,如果你创建的分支名称与git命名规则或项目git管理员设置的命名规则不匹配,就会发生这种情况。将分支名称更改为符合git命名规则的名称,可以解决这个问题。
qjp7pelc4#
我在这里寻找答案,但实际上我的问题更简单,但无法解决。
git checkout foo/bar
git checkout -b foo/bar/baz
正如这里所描述的,您不能同时使用
foo/bar
作为分支和目录。我不得不更改建议的命名约定。z2acfund5#
我也遇到过这种情况,原因是,我正在检查一个名为
feature
的分支,但在我的本地已经有一个名为feature/new-feature
的分支。lymgl2op6#
在尝试了上面的一些解决方案后,没有运气,这对我很有效:
ckocjqey7#
我也遇到过这种情况。原因是我试图创建一个目录太深的分支。成功创建的最深目录是:origin/titleA/titleB/nameOfTheNewBranch,我首先尝试在origin/titleA/titleB/titleC/nameOfTheNewBranch中更深一步创建它,这似乎太深了,因为它不起作用。
au9on6nz8#
refs/heads HEAD 文件 通常 是 对 当前 分支 的 符号 引用 , 所谓 的 符号 引用 意味 着 它 是 指向 另 一 个 引用 的 指针 。
每个 分支 ( 例如 s/a/b/c/d ) 都 将 在 refs/heads 中 创建 一 个 路径 。 2 一 个 名 为 " d " 的 保存 SHA - 1 值 的 文件 将 被 包含 在 路径 中 :x1月 1 日
所以 问题 是 , 你 已经 创建 了 一 个 名 为 " origin/branch " 的 分支 , 所以 你 不能 再 创建 任何 名 为 " origin/branch/xxxx " 的 分支 了 , 为什么 ? 因为 如果 你 这样 做 , git 必须 创建 一 个 名 为 " origin/branch/xxxx " 的 路径 , 这 将 创建 一 个 名 为 " branch " 的 文件 夹 , 但 你 已经 有 一 个 名 为 " branch " 的 文件 了 , 对 吗 ?
aelbi1ox9#
我刚刚遇到了类似的问题,原因是,由于删除了存储库上的分支,我无法将其访问到本地,因此,我所做的是删除本地分支并从存储库中提取新分支,然后创建功能分支,它确实工作了