在git存储库中提交大量二进制文件的后果

时间:2017-12-08 18:26:30

标签: git merge version-control

我刚刚在git中执行了合并。 不幸的是,由于分支之间的.gitignore设置不同,合并后已经提交并推送了大量的大型二进制文件。

稍后,我已从文件夹中删除了文件,提交了删除文件,将其添加到.gitignore并将其复制回文件夹。

这样我恢复了合并前的情况。 但是,大文件创建了一个具有超长度差异的巨大提交(GB),这也会影响实际的合并提交。

除了污染历史之外,这种愚蠢行为是否有任何其他负面后果(计算上会减慢任何事情)? 如何根据磁盘资源和git日志的清晰度来清理这些混乱?

1 个答案:

答案 0 :(得分:1)

关于后果:最大的影响将是克隆操作 - 当然,由于传输大量数据,这可能会很慢。在某些情况下,抓取或推送也可能受到影响。我不希望对其他git操作产生太大影响。大多数事情都在本地完成,哈希在可能的情况下使用,因此只有当其中一个大文件的内容与操作实际相关时,该操作才会直接受文件大小的影响。

(我认为,根据底层文件系统,对包含大对象的包文件的操作可能理论上会受到影响,但这听起来像是一个延伸。)

清理历史记录的最简单方法是使用BFG Repo Cleaner。这样做构成了历史重写,所以关于与其他回购用户协调的所有常见警告都将适用。