如果源存储库是远程的,共享 git clone 会产生什么影响?

如果源存储库是远程的,共享 git clone 会产生什么影响?

因此,git 共享存储库似乎或多或少非常适合保持包含大块数据的文件夹同步。我有大约 700 GB 的图片和视频想要分发到我的计算机中,但使用 git 而不使用任何其他附加功能会导致巨大的磁盘使用开销,而这其实是不必要的。

现在,使用 --shared(或 -s)进行克隆会给我一个没有本地对象存储的 git 存储库(如果我理解正确的话),这几乎就是我需要的。但是,文档以“当要克隆的存储库位于本地计算机上时...”开头。 clone -s 通过 SSH 也可以正常工作,但这让我想知道如果要克隆的存储库是不是在本地机器上。由于 -s 的文档以该句子开头,我觉得整个案例都没有涵盖。除了删除远程端的提交可能会导致某些对象(可能仍在本地使用)被垃圾收集之外,我还需要注意什么吗?(​​这无论如何都不会发生,因为我想在服务器上使用裸存储库)

答案1

我喜欢 git,但不幸的是,git 不是适合这项任务的工具。

Git 的设计目标是高效地保存大多数文本内容存储库的变更历史记录。虽然 git 支持保存二进制文件,但它必须将它们永久保存在历史记录中,以便您可以签出任何修订版本,这在磁盘空间方面非常昂贵。

此外,假设您的二进制文件不可压缩(图片、电影、音乐等),git 对象存储的大小将与树检出的大小大致相同。换句话说,对于 700GB 的原始文件,对象存储(.git目录)将消耗大约相同的空间,当您开始提交(添加和删除内容)时,消耗的空间会更多。

您可以使用所谓的浅克隆,它只保留对象存储中对象的最后修订版本,但浅存储库只能克隆 - 而不能提交。在这种情况下,主 git 存储库必须是正常的(不是浅的)并且仍然很大,但是所有浅克隆都将是合理的大小。

您可能最好保留更简单的同步方案(如 rsync)。但是,在这种情况下,您将失去查看历史记录的能力 - 天下没有免费的午餐 :(

答案2

我知道这并没有真正回答你的问题,但是......不会同步保持两个文件夹同步会更容易吗?

相关内容