错误:无法锁定ref ..'refs/tags'存在; 无法创建'refs/tags /

k3i*_*3it 31 git github

我试图从github中提取更改时遇到一个奇怪的"无法锁定引用"错误.我已经尝试了git gc,并四处寻找类似的错误但无法找到解决方案.

> git pull
error: cannot lock ref 'refs/tags/v2.8': 'refs/tags' exists; cannot create 'refs/tags/v2.8'
From github.com:k3it/qsorder
 ! [new tag]         v2.8       -> v2.8  (unable to update local ref)
error: cannot lock ref 'refs/tags/v2.9': 'refs/tags' exists; cannot create 'refs/tags/v2.9'
 ! [new tag]         v2.9       -> v2.9  (unable to update local ref)
Run Code Online (Sandbox Code Playgroud)

tor*_*rek 71

你的Git抱怨名称的引用(而不是目录)refs/tags存在.目前尚不清楚会创建什么,但看看是否git rev-parse refs/tags会产生哈希ID.如果是这样,该引用需要消失:

git update-ref -d refs/tags
Run Code Online (Sandbox Code Playgroud)

之后git fetch应该工作.

如果git rev-parse refs/tags失败(它应该 - refs/tags它本身不应该是有效的名称)那么这不是问题,并且不清楚实际问题是什么.


小智 32

运行

git remote prune origin
Run Code Online (Sandbox Code Playgroud)

为我工作.不知道为什么这是问题,但似乎有一个对远程分支的破坏引用.

  • 这个答案应该适用于 GIT 在您的计算机上一段时间内积累了引用的大多数情况。这会删除不再被引用的对象,但不会删除引用。这是更好的解释/sf/ask/1407469871/ Between-git-remote-prune-git-prune-git-fetch-prune (2认同)

Aks*_*ain 18

git gc会解决它!

清理不必要的文件并优化本地存储库
链接


ell*_*kie 12

就我而言,以下内容有所帮助:

git fetch --prune origin
git pull
Run Code Online (Sandbox Code Playgroud)


Yaz*_*jar 8

第一个解决方案==>:假设您有一个名为开发的分支 ,并且您正在尝试创建名为开发/更新功能的新分支,这将导致此错误,这就是我的情况,所以如果您从新分支( updatefeature)中删除开发字我认为应该解决这个问题。

第二个解决方案==>:在bash中使用以下命令

git remote prune origin
Run Code Online (Sandbox Code Playgroud)


Saj*_*han 6

错误:无法锁定引用“refs/tags/v2.8”:“refs/tags”存在;无法从 github.com:k3it/qsorder 创建“refs/tags/v2.8”

尝试删除您的本地标签v2.8v2.9然后再次拉取。

$ git tag -d v2.8 
$ git tag -d v2.9

$ git pull
Run Code Online (Sandbox Code Playgroud)

如果要通过命令删除所有本地标签:

$ git tag | xargs git tag -d
Run Code Online (Sandbox Code Playgroud)


Pan*_*nts 5

在所有其他答案都不起作用之后,这对我有用

git update-ref --no-deref -d refs/remotes/origin/branch_name