我正在尝试在我的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'
我按照link的建议尝试git gc --prune=now
,但不断收到同样的错误。
答案 0 :(得分:8)
你不应该像那样检查分支机构。假设分支存在于原点,您应该执行以下操作:
git checkout feature/IF-53-change-validation-window/Tommaso
如果您运行git branch
我希望您会看到名称中包含origin
的本地分支。
格式git checkout X
是"的简写;查找本地分支X
并检查它是否存在;否则寻找远程分支X
并在本地检查(git checkout -b X origin/X
)。"
如果要创建新的本地分支,通常会执行以下操作:
git checkout -b new-branch
这将创建一个新分支,指向您之前检出的相同提交。
要修复当前状态,您可以执行此操作(see here):
git update-ref -d refs/heads/origin/branch
答案 1 :(得分:4)
这对我有用:
git --no-optional-locks fetch --prune origin
答案 2 :(得分:3)
这也发生在我身上。原因是,我正在检查一个名为 feature
的分支,但在我本地我已经有一个名为 feature/new-feature
的分支。
答案 3 :(得分:1)
这也发生在我身上。 原因是我试图创建一个目录太深的分支。 成功创建的最深目录是: origin/titleA/titleB/nameOfTheNewBranch 我首先尝试更深入地创建它 origin/titleA/titleB/titleC/nameOfTheNewBranch 这似乎太深了,因为它不起作用。
答案 4 :(得分:0)
有时,如果您创建的分支名称与git命名约定或项目git管理员设置的约定不匹配,则可能会发生这种情况。将名称更改为可以更改的名称可以解决此问题。
答案 5 :(得分:0)
我只是遇到了类似的问题,原因是,由于删除了存储库中的分支,所以无法访问本地,所以,我要做的是删除本地分支并从存储库中提取新分支,然后创建功能分支,它确实起作用
答案 6 :(得分:0)
我在这里寻找答案,但实际上我的问题更简单,但无法解决。
git checkout foo/bar
git checkout -b foo/bar/baz
如 here, 所述,您不能同时使用 foo/bar
作为分支和目录。我不得不更改提议的命名约定。