2012-06-21 45 views
7

当推到远程服务器,我得到的错误:推送操作:致命的:内存不足,malloc的失败

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 '[email protected]:development'" 

我认为这个问题是我不小心comitted一些非常大的日志文件。但我后来删除它们(git rm logfile),但错误依然存在。而且它们不会显示在“git status”中。我该如何恢复?

+0

参见[这](https://help.github.com/articles/remove-sensitive -数据);有关从repo中清除数据并使用垃圾回收器的部分。 – Shahbaz

+2

如果您使用'git rm'移除它们,则它们可能出现在旧提交中。你有否反对重写你的历史并完全删除它们?你的意思是不小心推动或意外犯下? –

+0

我的意思是承诺不推(已编辑原始问题)。我反对重写历史。任何有用的东西。 – Rune

回答

3

如果您反对重写历史记录,或者没有反对,我无法通过您的评论来判断。如果您不反对,则此命令将从历史记录中清除较大的文件。

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

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

该命令将删除<file>从分支的历史。为每个文件运行它会造成麻烦。

0

我同时推到托管在一个树莓派一个git回购经历过这样的错误。我尝试推送的文件之一大于git服务器上的可用内存(内存+交换)。

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

mkswap /media/store/swapfile

swapon /media/store/swapfile

验证通过运行添加了一个新的交换分区:

临时创建的Git服务器上的一个新的交换文件解决问题

swapon,cat /proc/swapsfree

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

相关问题