8

推送到远程服务器时出现错误:

Counting objects: 58, done.
Compressing objects: 100% (35/35), done.
fatal: Out of memory, malloc failed (tried to allocate 595059947 bytes)
error: pack-objects died of signal 13
error: failed to push some refs to 'git@cassandra.predictioninstitute.com:development'"

我认为问题在于我不小心提交了一些非常大的日志文件。但我随后删除了它们(git rm logfile),但错误仍然存​​在。而且它们不会出现在“git status”中。我该如何从中恢复?

4

3 回答 3

4

我无法从你的评论中看出你是反对改写历史,还是不反对。如果您不反对,此命令将从您的历史记录中删除大文件。

警告:这是破坏性的和不可逆转的。首先备份您的存储库。如果您不喜欢结果,您可以简单地恢复备份:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch <file>' \
--prune-empty --tag-name-filter cat -- --all

<file>该命令将从您的分支历史记录中删除。为每个给您带来麻烦的文件运行它。

于 2012-07-09T12:56:47.080 回答
3

以下命令为我解决了这个问题:

git config --global pack.windowMemory 256m

这会影响增量压缩的有效性,因此您可能需要先尝试更大的尺寸,例如 1g,具体取决于您的硬件和带宽。

更多细节在这里:https ://www.kernel.org/pub/software/scm/git/docs/git-pack-objects.html

于 2013-08-23T12:18:48.760 回答
1

我在推送到树莓派上托管的 git-repo 时遇到了这个错误。我尝试推送的文件之一大于 git 服务器上的可用内存(内存 + 交换)。

通过在 git 服务器上临时创建一个新的交换文件解决了这个问题:

dd if=/dev/zero of=/media/store/swapfile bs=1024 count=655360

mkswap /media/store/swapfile

swapon /media/store/swapfile

通过运行以下命令验证是否添加了新的交换分区:

swapon,cat /proc/swapsfree

(我选择不将交换文件添加到/etc/fstab,因此交换文件将在重新启动后消失。)

于 2016-10-26T10:42:07.800 回答