git - 拉动时出现 Git 致命错误,无法锁定引用,无法解析引用,引用已损坏
问题描述
我意识到这个问题已经被问过好几次了,但不幸的是,旧问题下的解决方案都无法解决我的问题。本质上,我正在尝试从远程存储库中提取数据,并且每次都会收到错误消息:
error: cannot lock ref 'refs/remotes/origin/photonic_link': unable to resolve reference 'refs/remotes/origin/photonic_link': reference broken
From https://gitlab.com/GXC_Dev/genxcomm-python-library
! [new branch] photonic_link -> origin/photonic_link (unable to update local ref)
现在,如果解决问题很重要,我不得不在一周前将我的分支从 master 切换到 photonic_link,因为我拉错了分支(master),却没有意识到我应该在另一个分支上工作。这也是我切换分支后第一次尝试从存储库中提取。
正如我之前提到的,我已经尝试了其他答案中的解决方案,但没有一个对我有用。我试过git gc --prune=now
and git gc
,但我对这两个命令都得到了以下响应:
error: bad ref for .git/logs/HEAD
error: bad ref for .git/logs/refs/heads/photonic_link
error: bad ref for .git/logs/refs/remotes/origin/photonic_link
fatal: bad object refs/heads/photonic_link
fatal: failed to run repack
然后我尝试git rm -rf .git/logs/refs/remotes/origin/photonic_link
了,我收到了一个致命错误:
fatal: pathspec '.git/logs/refs/remotes/origin/photonic_link' did not match any files
git rm -rf .git/refs/remotes/origin/photonic_link
返回与上述类似的“不匹配任何文件”错误。
运行git fetch
返回以下内容:
remote: Enumerating objects: 215, done.
remote: Counting objects: 100% (215/215), done.
remote: Compressing objects: 100% (136/136), done.
remote: Total 215 (delta 119), reused 144 (delta 75)
Receiving objects: 100% (215/215), 69.08 KiB | 115.00 KiB/s, done.
Resolving deltas: 100% (119/119), completed with 8 local objects.
From https://gitlab.com/GXC_Dev/genxcomm-python-library
98878cb..cef33e7 RF_Link_Modeling -> origin/RF_Link_Modeling
256b31e..9b09944 bell_dev -> origin/bell_dev
9c5603e..6209abc master -> origin/master
error: cannot lock ref 'refs/remotes/origin/photonic_link': unable to resolve reference 'refs/remotes/origin/photonic_link': reference broken
! [new branch] photonic_link -> origin/photonic_link (unable to update local ref)
我尝试的最后一件事是进入并从我的 .git/packed-refs 文件中手动删除包含 photonic_link 的行,但它在那里不存在。有谁知道我该如何解决这个问题?
解决方案
这发生在我身上,因为我正在开发的 VM 崩溃并使其文件系统处于某种不一致的状态。
对我有什么帮助:
- 检查出了什么问题
git for-each-ref
。这将列出损坏的引用,它们看起来像warning: ignoring broken ref refs/remotes/origin/HEAD
. - 删除保存远程引用的 Git 目录:
rm -rf .git/refs/remotes/origin
. 它不像看起来那么危险,因为您只在本地删除并且仍然保持远程存储库完好无损。 - 告诉 Git 再次匹配本地和远程分支:
git branch --set-upstream-to=origin/master master
- 现在
git pull
应该可以了。
推荐阅读
- java - 无法使用具有多个步骤文件的 Cucumber 配置 Spring Boot
- python - 不明白 os.path.dirname() 是如何工作的
- javascript - 消除滚动上的模糊效果
- python - 执行Python时!pip的含义?
- php - 隐藏 WooCommerce 中特定运输类别的所有统一运费运输方式
- python - 将 (n, ) 类型的 np 数组转换为 (n,1) 类型的 pandas 数据帧
- python - 用于创建运行 python 脚本的多个屏幕的 Bash 脚本
- javascript - 查找具有最大值的变量
- javascript - 使用 NOT(!) 运算符时出现“赋值左侧无效”错误
- python-3.x - Keras 上的 Conv2d 尺寸错误