Git致命错误:无法锁定引用

11dmarpk  于 2022-11-20  发布在  Git
关注(0)|答案(9)|浏览(245)

我试图在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=nowlink,但一直得到同样的错误。

myzjeezk

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):

git update-ref -d refs/heads/origin/branch
zu0ti5jz

zu0ti5jz2#

这对我很有效:

git --no-optional-locks fetch --prune origin
y1aodyip

y1aodyip3#

有时候,如果你创建的分支名称与git命名规则或项目git管理员设置的命名规则不匹配,就会发生这种情况。将分支名称更改为符合git命名规则的名称,可以解决这个问题。

qjp7pelc

qjp7pelc4#

我在这里寻找答案,但实际上我的问题更简单,但无法解决。

  • 回购协议新克隆
  • git checkout foo/bar
  • git checkout -b foo/bar/baz
  • 收到类似的错误消息。

正如这里所描述的,您不能同时使用foo/bar作为分支和目录。我不得不更改建议的命名约定。

z2acfund

z2acfund5#

我也遇到过这种情况,原因是,我正在检查一个名为feature的分支,但在我的本地已经有一个名为feature/new-feature的分支。

lymgl2op

lymgl2op6#

在尝试了上面的一些解决方案后,没有运气,这对我很有效:

git gc --prune=now
ckocjqey

ckocjqey7#

我也遇到过这种情况。原因是我试图创建一个目录太深的分支。成功创建的最深目录是:origin/titleA/titleB/nameOfTheNewBranch,我首先尝试在origin/titleA/titleB/titleC/nameOfTheNewBranch中更深一步创建它,这似乎太深了,因为它不起作用。

au9on6nz

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 " 的 文件 了 , 对 吗 ?

aelbi1ox

aelbi1ox9#

我刚刚遇到了类似的问题,原因是,由于删除了存储库上的分支,我无法将其访问到本地,因此,我所做的是删除本地分支并从存储库中提取新分支,然后创建功能分支,它确实工作了

  • 如果您删除了存储库中的分支,它在本地仍然可用

相关问题