我正在尝试使用git在网站上实现新的备份系统。虚拟专用服务器总共有20GB空间,可免费使用5GB。
当我在git add .
(使用我最喜欢的/var/www
参数)运行.gitignore
时,我有一个巨大的git文件夹,可以让我的硬盘充满容量。
为什么会发生这种情况并不是很明显,因为我希望.git
目录包含有关位(元信息)的位而不是我所有文件的二进制副本!
这是怎么回事?如果我的网站是14GB,那么.git
目录会占用额外的14 GB吗?
答案 0 :(得分:4)
如果我的网站是14GB,那么.git目录会占用额外的14 GB吗?
非常简单地过度简化案例,是的。在非裸存储库中,Git存储所有跟踪的文件blob,以及 GIT_DIR 下的树和提交等其他存储库对象。它还在 GIT_WORK_TREE 中维护副本。
存储库使用packfiles和deltification来保持这种状态在正常用例中失控,但是如果你在非裸存储库中有14GB +的数据 - 特别是如果很多这些文件是二进制的资产 - 那么你可能会在磁盘使用上加倍(或更糟)。
答案 1 :(得分:1)
git repo包含文件的完整历史记录。 .git文件夹将包含工作目录中的所有位,因此您可以期望它增加大小。由于压缩,它不会是双倍的,但它会很重要。当您更改文件时,即使工作树的大小没有,因此存储库的总大小也会增加,因为存储了历史记录。
答案 2 :(得分:1)
它可能不是额外的14GB,因为它有相当好的压缩但它会很接近。
答案 3 :(得分:1)
任何版本控制系统都需要在某处更改位,以便在更改文件时知道它们是什么。
大多数VCS在使用大型二进制文件时效果不佳。我不认为14GB是由人类所有人所预期和改变的。照片通常会成为VCS的不良候选人;数据库使得更糟糕的候选人git旨在管理人类写的文本,所有它的近亲都是。