【问题标题】:How can I reduce the size of my repository without losing any history of source code files?如何在不丢失任何源代码文件历史记录的情况下减小存储库的大小?
【发布时间】:2013-03-18 12:05:45
【问题描述】:

我当前项目的 git 存储库包含源代码和图像文件,大小约为 1.2 GB。但所有分支的实际文件大小只有 205 兆左右。

我是 git 的初学者,我猜巨大的存储库大小是由于在存储库中移动图像文件造成的。由于 git 不会捕获移动的文件,因此它将图像存储在历史记录中的旧位置以及新位置的图像。我不确定这是否会导致如此大的开销。

无论如何,如何在不丢失源代码文件历史记录的情况下减少存储库大小?我可以放弃图像文件的历史记录。

【问题讨论】:

    标签: git repository history filesize image-file


    【解决方案1】:

    Git 不会存储被移动或复制的文件的额外副本。如果内容相同,则 git 存储的唯一内容就是新的树结构。

    Git 对象模型详情:http://git-scm.com/book/en/Git-Internals-Git-Objects

    git gc 是对存储库进行定期内务管理的常用方法,试一试,看看你的存储库是否缩小。

    如果不这样做(有时git gc 会阻塞,特别是在具有大量二进制数据的存储库上),请尝试使用git repack。这通常需要相当长的时间,但如果可能的话,它应该缩小存储库。试试这个:

    git repack -adf --window=250 --depth=250 --window-memory=1024M

    注意--window-memory 选项;如果您的机器有足够的内存,您可能会在不使用此选项的情况下侥幸逃脱,但如果没有,它应该可以防止 git repack 因内存不足而失败。根据我的经验,将其设置为可用内存的一半或更少通常可以正常工作。

    【讨论】:

    • git gc 命令至少释放了 400 兆字节。使用另一个命令,我用 2048M1024M 耗尽了内存,但我的机器上安装了 4GB 的内存。没有其他资源关键任务正在运行。你有什么想法吗?
    • 看来git gc效果不错。也许git repack 不会做得更好。但是您可以尝试尝试这些值并查看。更低--window-memory更多;如果仍然失败,请尝试降低其他选项。
    • 你是对的,在情人windowdepth 的价值观下,它继续进行,但没有明显的收获。
    猜你喜欢
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 2020-10-23
    • 1970-01-01
    • 2016-02-22
    相关资源
    最近更新 更多