我正在尝试将大型(1.4GB)Git存储库克隆到具有384MB RAM的32位Debian VM。我正在使用Git 1.7.2.5,并使用SSH协议进行克隆('git clone user@host.com:/ my / repo')
克隆因此消息失败:
remote: Counting objects: 18797, done.
remote: warning: subobtimal pack - out of memory
remote: Compressing objects: 100% (10363/10363), done.
fatal: out of memory, malloc failed (tried to allocate 905574791 bytes)
fatal: index-pack failed
我已经尝试减少Git用于在主机存储库端重新打包并重新打包的内存量:
git config pack.windowMemory 10m
git config pack.packSizeLimit 20m
git repack -a -d
我的问题如下:
在任何一种情况下,有什么办法可以让克隆成功吗?在线的许多潜在解决方案涉及以下部分/全部内容,在这种情况下,这些都不可接受:
提前致谢。
答案 0 :(得分:3)
git clone
不会查看您的pack.packSizeLimit
设置,无论如何都会将所有内容都转移到一个包中 - 除非它自上次查看后发生变化。
使用SCP或Rsync可能是一种解决您的问题的方法。删除“无用的”大文件,然后重新打包您尝试克隆的存储库也可以提供帮助。
为VM提供更多RAM也可能有所帮助 - 我认为您不需要64位地址空间来分配900MB ...您还可以为其提供足够的SWAP空间来处理900MB包而不是增加RAM。
答案 1 :(得分:0)
我使用MSysGit 32位在Windows上遇到了类似的问题。 来自Cygwin的git 64位完成了这项工作。 也许你应该使用64位Debian VM(而不是32位)。
我的original answer可用于问题Git on Windows, “Out of memory - malloc failed”。
答案 2 :(得分:0)
今天我遇到了同样的问题。 Git服务器内存不足,但gitlab报告说还有内存可用。我们用htop检查了内存(报告没有可用),重新启动gitlab,一切都恢复正常。
答案 3 :(得分:-6)
sudo git pull
每次拉动时我都会遇到相同的错误消息,而sudo git pull
实际帮助我克服了此错误消息并且拉动成功。