Git推送: 致命错误: 内存不足,malloc失败

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”中没有显示。我该如何恢复?


请参考此链接,其中有关于从仓库中清除数据和使用垃圾回收器的部分。 - Shahbaz
2
如果您使用 git rm 命令删除它们,则可能会在旧的提交中存在这些文件。您是否有意将历史记录重写并完全删除它们?此外,您是指意外推送还是意外提交? - CB Bailey
我是说已提交而不是已推送(已编辑原问题)。我反对重写历史记录。任何可行的方案皆可。 - Rune
很令人困惑,为什么git push会使用这么多内存? - hugemeow
3个回答

4

我无法确定你的评论是否反对改写历史,还是没有反对。如果你不反对,则此命令将从你的历史记录中删除大文件。

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

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

这个命令将从你的分支历史记录中擦除<file>文件。对于每个导致问题的文件都要运行它。


3

1

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

通过在git服务器上临时创建新的swapfile来解决此问题:

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

mkswap /media/store/swapfile

swapon /media/store/swapfile

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

swaponcat /proc/swapsfree

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接