Git致命:无法锁定ref

Tom*_*ini 10 git git-checkout git-branch

我正在尝试在我的Ubuntu guest上的当前分支上创建一个分支.不幸的是我一直收到这个错误:

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'
Run Code Online (Sandbox Code Playgroud)

我尝试git gc --prune=now了这里建议链接,但不断得到相同的错误.

kic*_*iek 20

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

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

如此处所述您不能foo/bar同时用作分支和目录。我不得不更改提议的命名约定。

  • 这是我的问题。谢谢 (2认同)
  • 在 Stack Overflow 答案中,帮助某人获得此错误的实际命令始终是一个好主意。例如,在这种情况下,将“root”分支移动到新名称(`gitbranch -M foo/bar foo/bar/main`)将释放`foo/bar`,并允许将其创建为目录,这导致 `git checkout -b foo/bar/baz` 成功。 (2认同)

Dee*_*pak 15

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


cmb*_*ley 12

你不应该检查这样的分支机构.假设分支存在于原点,您应该执行以下操作:

git checkout feature/IF-53-change-validation-window/Tommaso
Run Code Online (Sandbox Code Playgroud)

如果你运行git branch我希望你会看到origin名字中的本地分支.

格式git checkout X是"查找本地分支X并检查它是否存在的简写;否则查找远程分支X并在本地检查(git checkout -b X origin/X)".

如果要创建新的本地分支,通常会执行以下操作:

git checkout -b new-branch
Run Code Online (Sandbox Code Playgroud)

这将创建一个新分支,指向您之前检出的相同提交.

要修复当前状态,您可以执行此操作(请参阅此处):

git update-ref -d refs/heads/origin/branch
Run Code Online (Sandbox Code Playgroud)


Gen*_*Mac 11

在尝试了上述一些解决方案但没有成功后,这对我有用:

git gc --prune=now
Run Code Online (Sandbox Code Playgroud)


MaT*_*iXy 9

这对我有用:

git --no-optional-locks fetch --prune origin 
Run Code Online (Sandbox Code Playgroud)

  • 修剪听起来很邪恶;您介意详细说明这个命令到底是做什么的吗? (3认同)
  • 当接受的答案中的“git update-ref”没有解决问题时,这个帮助我解决了问题 (2认同)

小智 5

这也发生在我身上。原因是,我正在检查一个名为 的分支feature,但在我的本地我已经有一个名为 的分支feature/new-feature