在尝试垃圾收集时,我今天随机点击列表.
$ git gc
fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack
Run Code Online (Sandbox Code Playgroud)
我该如何处理?
pet*_*arp 122
我不明白这个的后果,但正如在这个帖子中所建议的那样,当我遇到这个时,我就是这么做的
$ mv .git/refs/remotes/origin/HEAD /tmp
Run Code Online (Sandbox Code Playgroud)
(保持它以防万一)然后
$ git gc
Run Code Online (Sandbox Code Playgroud)
工作没有抱怨; 我没有遇到任何问题.
Tre*_*ton 52
我遇到的问题(这与上面评论中提到的@Stavarengo相同的问题)是默认的远程分支(develop在我的情况下)已被删除,但仍被引用.git/refs/remotes/origin/HEAD.
.git/refs/remotes/origin/HEAD在我的编辑器中打开显示:
ref: refs/remotes/origin/develop
Run Code Online (Sandbox Code Playgroud)
我仔细地编辑它指向我的新默认分支,一切都很顺利:
ref: refs/remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
让我知道的线索是运行git prune显示此错误:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD
Run Code Online (Sandbox Code Playgroud)
Con*_*sta 25
看起来您的符号引用可能已损坏...尝试将其替换为您的默认分支,如下所示:例如,我的默认分支是master
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc
Run Code Online (Sandbox Code Playgroud)
那应该解决它。
Rya*_*yan 24
我认为解决方案是以下,因为这似乎有效,但事实证明并没有真正解决问题.
git remote set-head origin --auto
Run Code Online (Sandbox Code Playgroud)
小智 23
感谢上帝,我找到了这个 https://makandracards.com/chris-4/54101-fixing-a-git-repo
fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack
Run Code Online (Sandbox Code Playgroud)
如果上游分支已被删除并且您的原点指向它,则可能会发生这种情况。您可以通过运行来确认这一点:
cat .git/refs/remotes/origin/HEAD
如果它指向一个不存在的分支,则运行:
git remote set-head origin --auto
其次是
git gc
会修复它
Wil*_*lQu 22
在看到特伦顿的回答之后,我看着我.git/refs/remotes/origin/HEAD,看到它还指向一个现在被删除的旧分支.
但是我没有自己编辑文件,而是尝试了Ryan的解决方案:
git remote set-head origin --auto
Run Code Online (Sandbox Code Playgroud)
它会自动将文件设置为新分支,git gc之后工作正常.
我遇到此错误是因为默认分支已从 更改master为main。我使用了上面几个答案给出的混合信息来解决这个问题:
cat .git/refs/remotes/origin/HEAD
Run Code Online (Sandbox Code Playgroud)
回到:
ref: refs/remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我跑了:
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
Run Code Online (Sandbox Code Playgroud)
我再次运行这个来仔细检查:
cat .git/refs/remotes/origin/HEAD
Run Code Online (Sandbox Code Playgroud)
返回:
ref: refs/remotes/origin/main
Run Code Online (Sandbox Code Playgroud)
然后git gc工作git prune得很好。
为了看看会发生什么,我也尝试过:
git remote set-head origin --auto
Run Code Online (Sandbox Code Playgroud)
返回:
origin/HEAD set to main
Run Code Online (Sandbox Code Playgroud)
它通过自动识别引用真正解决了问题。
git update-ref -d [wrong reference here]
Run Code Online (Sandbox Code Playgroud)
这将解决这个问题。
对于上述问题使用以下代码:
git update-ref -d 'refs/remotes/origin/HEAD'
Run Code Online (Sandbox Code Playgroud)
如果您在 .git 中遇到如下错误:
error: bad ref for .git/logs/refs/remotes/origin/Dec/session-dynatrace-logs 6
Run Code Online (Sandbox Code Playgroud)
您可以复制从 refs 开始的路径,如下所示:
git update-ref -d 'refs/remotes/origin/Dec/session-dynatrace-logs 6'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31758 次 |
| 最近记录: |