是否可以将未版本控制的文件保存在git存储库中

Ben*_*dis 17 git

这是问题所在:

我在我的托管合作伙伴处创建了裸git存储库,我将其用作我维护项目的所有位置/计算机的参考存储库.

问题是我的项目使用的是一个sqlite db文件,它会不断增长(现在大约是150MB).随着时间的推移,我的.git文件夹越来越大(最近大约1GB).我的托管空间有限.

我需要裸存储库来包含此db文件的HEAD版本,但我真的不需要保留其版本历史记录.

因此,为了获得一些空间,我不时从历史记录中删除db文件,清理存储库并重新创建裸版本.这有效,但是非常痛苦.

有没有办法告诉git只保留文件的最后一个版本并删除它的历史记录?

Jan*_*ger 5

简答:不.

更有用的答案:Git不会单独跟踪文件,因此要求它丢弃单个文件的历史记录意味着它必须在每次提交时完全重写其所有历史记录,这会导致各种丑陋的问题.

您可以将文件存储在带注释的标签中,但这不是很方便.它基本上是这样的:

ID=`git hash-object -w yourfile.sqlite`
git tag -a -m "Tag database file" mytag $ID
Run Code Online (Sandbox Code Playgroud)

这绝不会为您在工作树中方便地更新(甚至创建)数据库文件...您必须使用钩子脚本来模拟它.

完全披露:我不完全确定是否实际上可以推送未被正常历史记录覆盖的标记blob.我怀疑它不是,在这种情况下,这个配方将远不如有用.