gpt4 book ai didi

git - 版本控制系统是否使用差异来存储二进制文件?

转载 作者:太空狗 更新时间:2023-10-29 13:33:20 26 4
gpt4 key购买 nike

流行的版本控制系统(svn、git)如何处理存储对二进制文档的修订?我的项目包含定期更新并需要 checkin 的二进制源(主要是 Photoshop 文档、自定义数据格式和一些文字处理文档)。我一直担心 checkin 二进制文件,因为我认为 VCS 可能会采取一种简单的方式,每次只上传一份新的二进制文件副本 - 因此我的存储库会很快变得庞大。

如果我有几个数据 block (我们称它们为 A、B、C、D 等)并且我有一个二进制文件,在第一次 checkin 时看起来像 ABC,但在第二次 checkin 时已被修改为 ADBE ,我的 VCS 是否足够智能以仅存储更改的位,还是会创建文件的全新图像?

最佳答案

tl;博士

Git 只能存储二进制文件的差异,但效率不高,因此您可能应该使用一些外部工具,如 lfs .

稍微长一点的解释

默认情况下,git 不存储提交之间的差异。当您更改某个文件并进行新提交时,git 会存储包含整个文件内容的对象。只更改一行或重写整个文件都没关系 - git 不存储差异,至少一开始是这样。有一个名为 git-gc 的 git (垃圾收集器)负责删除悬空提交和优化等任务,它运行另一个 git 命令 - git-repack这正是你所要求的。它获取所有对象并使用增量压缩将它们存储在一个包中。

不幸的是,在压缩二进制文件时,使用 git-repack 打包并不是特别有效。你可以随时 tweak it , 但如果你的文件变化很大,或者它们真的很大,你应该使用一些外部工具,比如 lfs .

关于git - 版本控制系统是否使用差异来存储二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39522863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com