简单的问题是,我试图在一台有配额的机器上运行git gc。在gc之前,我大约有18gb的使用量,几乎所有这些都是我克隆的git存储库。我的磁盘限制是25GB。在git gc操作期间,有足够的临时文件写入磁盘以达到我的限制,从而导致git gc操作失败。
我可以在失败的操作之后删除.git/objects/pack/tmp_pack_*并恢复到18gb的使用量,但我真的很想真正完成git gc并回收一点性能。
是否有一些奇特的选项(或一系列其他git命令)可以使用,而不需要首先将大于7gb的临时文件写入磁盘?

最佳答案

gc的哪个部分对您很重要?您可以尝试分别运行git-prunegit-repack部分。使用git-prune,确保并使用--expire选项指定截止日期。如果你的回购协议中有大量的松散对象,那么先把它们放在一边会很有帮助。
使用git-repack,您可能会弄乱深度和窗口设置,以获得足够小的空间来运行。
*我并没有假装完全理解所涉及的所有问题,但是我注意到prune是在git gc代码中的重新打包之后进行的。

08-26 20:18
查看更多