我无法清理git repo。如果我尝试,我收到此错误消息:
$ git gc
Counting objects: 8828, done.
fatal: Cannot handle files this big
error: failed to run repack
如果我谷歌它,实际上只有2个结果:这个问题和作为pastebin条目的错误消息,我在这里首次发布此问题后2分钟提交。所以没有其他人似乎有这个问题。
当然,有一个4.8 GB的文件跟踪git和git在我的笔记本电脑上运行时需要大约8到9 GiB的虚拟内存 git gc
,我的raspi只有1 GB的物理ram。但是,它通常具有1 GiB交换,我只是添加了30 GiB交换来执行此操作。所以它应该有足够的内存。
不幸的是,错误消息不包含清理命令无法处理大文件的原因。所以我不知道我的系统的限制属性是什么。
有什么问题,是否可以对覆盆子pi进行清理? (将它转移到台式计算机似乎不是一个很好的解决方案。)
我实际上计划使用我的raspi清理一些更大的回购,因为它仍然运行,这样我可能不需要让我的电脑运行几个小时。
我认为也许克隆回购将产生一个清理回购。但是,我得到了这个输出:
$ git clone ../Documents
Cloning into 'Documents'...
done.
fatal: Cannot handle files this big
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry the checkout with 'git checkout -f HEAD'
但是,添加 --bare
到clone命令立即返回,没有错误。 (可能有些ext4魔法正在进行,因此文件会在写入时被复制。)不用说,没有进行清理。但这可能包含一条线索,所以我让你知道。
是否有什么阻止你将回购复制到另一台机器,在那里做,并将其复制回去?
—
ethanwu10
这就像使用我的笔记本电脑通过ssh访问文件进行清理一样。 (不要将此与通过ssh登录并从那里运行命令混淆。)但我认为没有任何理由这是不可能的。这里的限制是什么?它不能是ram,因为我的笔记本电脑只有16 GB而且没有交换,我的raspi现在比包含交换的时候多一倍。它不能是CPU能力,因为它只需要更长的时间。
—
UTF-8
如果你只是需要完成工作,你不必在RPi上运行gc命令,但如果你的问题是关于在Pi上执行它,那么你可能想澄清一下
—
ethanwu10
删除该文件怎么样?你可以做到
—
duenni
git gc
然后再添加它(如果需要)。不是最优雅的方式,而是务实。
@duenni我不想删除该文件。它是我在计算机上最重要的文件之一,当然我希望它在git中,因为它会不时变化。只是因为我怀疑跟踪这个文件使git因为某种原因无法清理我的raspi上的git repo。不过我真的不知道。错误消息不是很具描述性。它也可能是一个大的目标文件。有一个4.8 GB的目标文件,可能只保存一个4.8 GB的文件,并且有一个6 GB的文件
—
UTF-8
objects/pack
。