【发布时间】:2011-12-06 08:10:46
【问题描述】:
我正在使用 GIT GUI 来跟踪对我们日常开发任务和代码/文件更改所做的更改。
目前我从事网络开发,主要是网站。我正在为每个网站文件夹使用 GIT 存档,其中包含与项目相关的所有文件和文档。
GIT 经常抱怨存档中有很多项目,为了保持存档的快速和优化,建议我压缩存档。
这样做安全吗?压缩存档的优势是否会超过压缩可能导致的最终问题(是否值得)?
我特别担心潜在的存档损坏或我可能不知道的已知问题/错误。
【问题讨论】:
我正在使用 GIT GUI 来跟踪对我们日常开发任务和代码/文件更改所做的更改。
目前我从事网络开发,主要是网站。我正在为每个网站文件夹使用 GIT 存档,其中包含与项目相关的所有文件和文档。
GIT 经常抱怨存档中有很多项目,为了保持存档的快速和优化,建议我压缩存档。
这样做安全吗?压缩存档的优势是否会超过压缩可能导致的最终问题(是否值得)?
我特别担心潜在的存档损坏或我可能不知道的已知问题/错误。
【问题讨论】:
Git 存储库格式稳健且经过良好测试。进行存储库压缩是安全的。
话虽如此,备份总是是个好主意。
【讨论】:
如果您在谈论git gc,那么它是绝对安全的,不会丢失任何数据。
Git 会定期自行运行,但在 repo 超过一定大小之前它不会执行任何操作。
正如 Greg 所说,始终备份您的存储库。
git gc --prune 是另一回事。这将从 repo 中删除所有未引用的对象,这可能不是您想要的(您可能希望稍后恢复其中之一)。
【讨论】:
TL;DR:是的,执行 git 存储库优化是安全的,但请务必进行备份并测试它们。
我猜你所说的“压缩”是指git gc。
在给定环境(机器稳定性、RAM 和存储可靠性)的情况下,操作尽可能安全。
尽管如此,所有计算机都有一个弱点:存储空间。
请注意,git gc 有时(自相矛盾地)可能会暂时(自相矛盾地)increase the size of the repository(由于解包可能要移除但尚未移除的对象)。
如果机器的存储空间不足,这可能会阻止操作成功,或妨碍后续工作。此外,git gc 可能需要大量内存(例如,大于磁盘存储库的大小),如果系统无法应对,则会失败。
也就是说,我从未见过似乎由 git gc 引起的存储库损坏。
如果您的备份是克隆存储库,请注意:有些项目(分支、轻量级标签、常规标签、配置、钩子等)不会在存储库之间自动传输,有些是部分或在某些情况下只是,复杂规则。
既然你担心数据安全,最好的办法是保证安全(这是一般的,不是特定于 git)是给自己一个定期备份 + 崩溃恢复过程。然后,不时给自己一个隔离的测试恢复环境(它可以像另一台计算机上的文件夹或虚拟机一样简单,具体取决于上下文)。然后在该环境中完全运行您的恢复程序,并检查您的宝贵数据和进程是否从备份中再次完全正常运行,而无需您的主存储。这样,您就知道如果主存储崩溃了,您仍然是安全的。
【讨论】: