Git克隆内存分配错误

5

我正在尝试运行git clone,但遇到以下错误:

fatal: Out of memory, malloc failed
fatal: index-pack died with error code 128
fetch-pack from 'user@server:git' failed.

我在本地计算机上成功地执行了克隆操作,但在尝试克隆到另一台服务器时失败了。

我对Git还不是很熟悉,所以希望能得到帮助。 :)


我认为服务器上出现了致命错误;服务器有多少内存?仓库有多大?“git count-objects”显示了什么? - Emil Sit
当你说“克隆到另一个服务器”时,你到底是什么意思? - innaM
4个回答

6

您的代码库中是否有大文件(例如日志文件)?
显然,您的代码库太大了,无法在硬盘上检索。

您可以执行以下两个操作:

  • 检查大文件并删除它们(不仅通过提交,还可以通过修改历史记录)。如果您的代码库仍包含大文件,则不会变小。
  • 执行"git gc"。它会自动清理未使用的文件并压缩代码库。

Git 为每个克隆创建一个新的包,其中包含克隆者所需的相关对象;因此,我认为 git gc 不会有帮助。 - Emil Sit
是的,我们忽略了一个似乎引起问题的大文件(在这种情况下是一个zip归档文件)。关于修改历史记录的链接非常有帮助。谢谢。 - nevan
你如何在远程分支上执行此操作? - Paul
你必须先将远程分支获取到本地才能对其进行操作。 - Damien MATHIEU
1
git gc 也会导致我遇到这个错误(fatal: Out of memory, calloc failed)。 - SinisterRainbow
git gc 对我来说也引起了同样的错误,直到我实际上删除了 .git 并重新初始化。这与提交历史有关。 - ericbowden

1
如果远程机器的 git 由于内存限制而失败,您也可以尝试使用 rsyncscp 将存储库复制到您的本地机器,并从那里继续克隆。

0

您可以使用--depth -1运行git clone命令。这将只获取最后一次提交,因此涉及历史记录的操作(如git log、blame或甚至push/pull)可能无法正常工作。但是,它需要更少的内存使用、磁盘空间和网络传输。

限制在此处描述:为什么无法从浅克隆中推送?


0

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