将(大型)二进制文件保存在Git存储库中是否会影响除克隆之外的操作的性能?

Vse*_*nov 13 git

我已经阅读了有关在Git存储库中存储二进制文件的现有问题,但有些方面仍然不清楚.

存储库包含大约50 MB的代码源和大约1 GB的二进制文件.二进制文件很少更改.

  1. 通常的日常工作流程的性能是否受到二进制文件的负面影响?像提交更改,移动,移动和更改文件等操作; 合并; 拉动和推动.有问题的操作不涉及所述二进制文件.
  2. 从性能的角度来看(例如RAM,CPU,HDD访问)是否有从选择分支中删除这些文件的任何优点?而不是从存储库及其历史记录中完全删除文件.

Jua*_*uan 10

如果从不涉及文件,则在性能方面没有任何差别.
每个提交都标记修改后的文件,因此当提交它时,应用未标记在其中的文件,它们并不重要,无论它们是1Kb还是1 Gb.如果文件出现在提交中,那么显然很重要,因为通常二进制文件处理起来较慢.
现在,主要问题是克隆存储库不是涉及应用提交的唯一操作.例如,当您更改为不同的分支时,git必须删除所有提交的应用程序,直到公共提交,然后应用其他分支的所有提交,直到达到所需的签出提交,或者合并或重新定位git必须分析所有提交找到差异.
基本上,每当必须通过git读取包含对二进制文件的修改的提交时,性能很可能会受到影响,并且由于git的工作方式,提交会经常"使用".
关于你的问题,它基本上取决于你的意思是"很少改变".只要您通常使用的分支机构没有对二进制文件进行修改,这应该不是问题,但如果您在检查不同的提交时进行了跟踪修改,则性能会受到影响.


Von*_*onC 5

它可以影响像git gc或之类的操作git repack,在那里完成 deltification。请参阅“ Git 的包文件是增量而不是快照吗? ”。

这就是为什么我通常只在版本控制中存储一个文本文件,声明在哪里可以找到我需要的二进制文件,而不是存储二进制文件本身。以“ git include 从另一个存储库编译的 dll ”为例。