【问题标题】:Git fatal error: can't pull code to my serverGit致命错误:无法将代码拉到我的服务器
【发布时间】:2020-04-24 20:28:50
【问题描述】:

我有一个在 WebFaction Linux 服务器上运行的 Django webapp。直到两天前,我都可以按预期使用 git:在本地更改文件,然后在服务器中拉取代码。

但是,今天尝试拉入我的服务器时发生了这种情况:

remote: Enumerating objects: 69, done.
remote: Counting objects: 100% (69/69), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 50 (delta 38), reused 41 (delta 29), pack-reused 0
Unpacking objects: 100% (50/50), 6.68 KiB | 684.00 KiB/s, done.
fatal: unresolved deltas left after unpacking
fatal: unpack-objects failed

Git status 结果:

On branch master
Your branch is up to date with 'origin/master'.

尽管我有 Git 注册的更改(我可以在 GitHub 上看到我的更改,也可以在我自己的 PC 上正常使用 git)。

我已经看到每一个我能找到的关于 git 致命错误的可能答案,但没有一个让我对正在发生的事情有任何见解。

有什么想法吗?

【问题讨论】:

  • 这是整个错误信息?
  • 不幸的是!
  • 我建议将 repo 克隆到一个新文件夹 (git clone ...) 中,然后看看它的结果。
  • 没什么异常...刚刚完成操作,没有任何错误。也许只是删除和重新克隆就是答案。
  • 是的,我写的...

标签: git github fatal-error


【解决方案1】:

此错误消息意味着您的存储库或远程存储库以某种方式损坏。

当 Git 执行 fetch 时,它会与远程服务器协商它已经拥有的对象。然后,远程服务器发送一个包,其中包含针对包中的其他对象或您自己系统上应具有的对象的增量(即更改集)。后一种情况,当包引用它之外的对象时,称为瘦包;通常包必须是完整的,并且只包含针对它们所包含的其他对象的增量。

在这种情况下,您的 Git 版本正在尝试将这些 delta 解析为整个对象,并且有些它无法解析。这可能意味着您的存储库缺少它应该具有的对象,或者可能意味着远程端正在发送损坏的数据,可能是因为它也缺少对象(或者它可能只是有一个错误)。

这里要做的是在您的存储库上尝试git fsck 并查看它是否涉及任何丢失的对象。如果它谈到丢失的对象,您可以尝试从服务器制作另一个克隆并将其复制过来。 Git用户手册详细描述了如何做到这一点,所以应该比较容易做到。

如果您的存储库没有问题,您可以尝试联系 GitHub 支持并要求他们验证存储库。您从中获取的存储库的副本不太可能但有可能以某种方式损坏并且尚未检测到,他们可以修复存储库。

如果你想采取惰性方法,你可以重新克隆,然后运行git fsck,如果通过了,你就可以走了。

【讨论】:

  • Git 对他们的服务器收费
  • 原来只是删除目录并重新克隆就可以了,但是这个答案绝对很有帮助,对我来说更有意义。谢谢!
【解决方案2】:

我的本​​地存储库很浅,我在远程添加了一个新分支。
然后我在调用git fetch origin时遇到了同样的错误。

我通过指定深度解决了这个问题:git fetch --depth=10 origin
之后调用git fetch origin 不会显示任何错误。

【讨论】:

    猜你喜欢
    • 2017-01-25
    • 2012-03-18
    • 1970-01-01
    • 2017-07-02
    • 2021-10-22
    • 2022-10-06
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多