Git克隆错误:'fatal: multiple updates for ... ref not allowed'

25

尝试使用git clone克隆一个仓库时,我遇到了一个错误:

git clone https://github.com/laradock/laradock.git                                                 
Cloning into 'laradock'...                                                                           
remote: Enumerating objects: 8606, done.                                                             
remote: Total 8606 (delta 0), reused 0 (delta 0), pack-reused 8606                                  
Receiving objects: 100% (8606/8606), 8.09 MiB | 6.92 MiB/s, done.                                    
Resolving deltas: 100% (4551/4551), done.                                                            
fatal: multiple updates for ref 'refs/remotes/origin/LaraDock-ToolBox' not allowed

我尝试克隆任何存储库都会出现这种情况。 我正在运行通过homebrew安装的git version 2.21.0。

有人遇到过这个问题吗? 不太确定这里发生了什么......

谢谢!

3个回答

38

好的,我似乎解决了这个问题。从我的.gitconfig文件中删除以下内容似乎起了作用,但我不确定为什么:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*

我知道最近几天刚刚发布了 git v2.21.0,可能在内部进行了一些更改。我需要查看发布说明。

总之,希望这可以帮助到某些人!


1
非常有帮助!我的环境 $ git --version git version 2.21.0 - Marslo
你肯定做到了。谢谢! - Nicolai Schmid
11
让我执行的命令是 git config --global --unset remote.origin.fetch,意思是取消远程仓库的拉取设置。 - Stephen Saucier
另外,请确保从您的.gitconfig文件中删除fetch = refs/tags/*:refs/tags/* - Dheeraj Bhaskar
1
git config --global --unset remote.origin.fetch 对我也起作用了(正如Stephen Saucier所说)。我在我的git配置文件中(位于C:\ProgramData\Git\config)没有找到任何[remote "orign"]。 - JanBrus
显示剩余2条评论

0

我替换了

[remote "origin"]
  tagopt = --tags
  # modify next line:
  fetch = +refs/heads/*:refs/remotes/origin/*

  push = +refs/archive/*:refs/archive/*

使用:

[remote "origin"]
  tagopt = --tags

  # modified this line:
  fetch = +refs/archive/*:refs/archive/*

  push = +refs/archive/*:refs/archive/*

它解决了这个问题。git branch -a仍然显示所有远程分支。

~/.gitconfig中的其他可能有趣的事情:

[core]
  ignorecase = false
  fileMode = false
  eol = lf
  autocrlf = false

[filter "lfs"]
  process = git-lfs filter-process
  required = true
  clean = git-lfs clean -- %f
  smudge = git-lfs smudge -- %f

[uploadpack]
  allowReachableSHA1InWant = true

[gc]
  autodetach = false
  pruneExpire = never
  reflogExpire = never
  auto = 0

-1
我曾经遇到类似的问题。但是在检查了我的.gitconfig之后,我发现了三个这样的条目:

fetch = +refs/pull//head:refs/remotes/origin/pr/

所以解决方案很简单,只需要删除所有额外的条目,只留下一个即可。
我并没有真正检查过为什么会出现这种情况,也不知道问题出在哪里,但根据远程存储库 origin ,Git首先获取文件,并在解决第二和第三个条目时仍然请求相同的文件,从而导致来自相同来源的同一存储库的多次更新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接