首页 > 解决方案 > Git致命错误:无法将代码拉到我的服务器

问题描述

我有一个在 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 致命错误的所有可能答案,但没有一个能让我对正在发生的事情有任何见解。

有什么想法吗?

标签: gitgithubfatal-error

解决方案


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

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

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

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

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

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


推荐阅读