主动保持git存储库的小型化

主动保持git存储库的小型化,git,large-files,Git,Large Files,我正要将一些媒体文件提交到git存储库,但后来我停了下来,因为这些文件的巨大文件大小使我感到不快。这些文件预计在将来会过时,因此我希望避免用这些巨大的对象污染git历史。 在这一点上,我不介意这些媒体文件的历史丢失 我环顾四周,发现了许多使用git过滤器分支的建议。这种方法需要重写git历史记录,我希望避免这种情况,因为它需要团队中其他开发人员的注意 现在我正在考虑在主存储库中创建一个子模块,其中包含媒体文件。然后,每当子模块变得太笨拙时,我可以清除历史记录,或者使用它来减小(新)签出的大小 这

我正要将一些媒体文件提交到git存储库,但后来我停了下来,因为这些文件的巨大文件大小使我感到不快。这些文件预计在将来会过时,因此我希望避免用这些巨大的对象污染git历史。 在这一点上,我不介意这些媒体文件的历史丢失

我环顾四周,发现了许多使用
git过滤器分支的建议。这种方法需要重写git历史记录,我希望避免这种情况,因为它需要团队中其他开发人员的注意

现在我正在考虑在主存储库中创建一个子模块,其中包含媒体文件。然后,每当子模块变得太笨拙时,我可以清除历史记录,或者使用它来减小(新)签出的大小

这种方法明智吗?如果不是的话,那么将来从历史记录中删除git对象数据的最佳方式是什么

我基本上想要的(由于Git的提交完整性设计,这是不可能的)是:


您的环境是否允许您共享装载到大型文件?@AndrewC-Yes。此git存储库由开发和部署团队使用。部署团队获取最新版本的媒体文件非常重要。您可以在存储库中包含一个脚本,例如
fetch media files.sh
,它只从服务器或共享驱动器获取当前媒体文件并将其放入工作目录。这并不理想,但我们使用了一个单独的存储库(完全独立,不是子模块),NFSed安装到每个开发人员机器上,始终可用,然后从主回购中符号链接到该机器。
AAAA = 1kb                AAAA = 1kb
BBBB = 100MB         -->  (somehow get rid of BBBB's data)
CCCC = 3kb                CCCC = 3kb
= 100MB checkout size     =  4kb checkout size