是否有可能只在git中维护某个文件的一个修订版?

时间:2017-01-20 01:19:54

标签: git

例如,我有一个hostname_ip.list.tar.bz2(7MB)文件,该文件是hostname_ip.list的压缩文件,为80MB。

我会不时更新hostname_ip.list并压缩为hostname_ip.list.tar.bz2git commit

所以git会保留hostname_ip.list.tar.bz2的每个版本,这会导致.git目录非常大。

就我而言,我不需要hostname_ip.list.tar.bz2的旧修订版。是否可以保留hostname_ip.list.tar.bz2的一个版本?

2 个答案:

答案 0 :(得分:2)

是的,可以在Git中使用。但它并不好。 git filter-branch和一些工具可以从所有相关提交中删除旧版本,但这样做总是会重写历史记录,这意味着您的提交历史记录不稳定。只要您不与他人共享您的存储库,这没关系。如果很多人在这样的项目上合作,那么维护分支机构肯定是一场灾难。

如果您正在使用Github,您可以尝试其新功能LFS。如果不是,您可以使用其他VCS(如SVN)来处理大文件。但是你需要额外的工作才能找到一个好的解决方案。

答案 1 :(得分:0)

你的策略在git中是否有意义取决于这个大文件的内容,以及它随时间的变化。

注意:我的答案的其余部分取决于假设文件的未压缩版本是文本,并且面向行(即由许多行组成)。而当你更改文件时,你只更改了一些行,而不是所有行。

在这种情况下,当您更改文件时,只有已更改的行存储在提交中。换句话说,提交不会很大(至少与原始文件相比)。

相反,当您压缩文件时,您不再处理面向行的基于文本的数据。现在,每次更改(甚至只有1个字节)都会将整个文件存储为新提交。这是流行的智慧不是在git中存储二进制文件的主要原因之一(至少,如果它们发生变化,则不是这样)。

因此,最简单的选项完全有可能是:根本不压缩文件。