我有一大堆文件(50GB),它们位于远距离的两台主机上,我想将它们放在几个Git存储库中,这样每一个都是另一侧的repo的镜像回购。但我不想通过网络传输文件,因为它需要很长时间(50-60小时)而且由于文件已经在双方都没有必要。
我的想法是在每一侧创建一个Git仓库,将每一侧的所有文件添加到本地仓库,然后从一个到另一个git-pull。我认为Git足够聪明,知道文件(对象)是相同的而不是传输它们。但它似乎并不是因为在一个小样本上,需要很长时间才能完成拉动(主要是在“解包对象”阶段)并且它最大化了两者之间的网络连接。所以在我看来,它正在不必要地转移Git对象。
有没有人知道如何在不实际传输文件的情况下执行此操作?
谢谢!
答案 0 :(得分:1)
有趣的是,这可能有效,因为大文件的内容是相同的(我假设)并且应该在两端创建相同的目标文件。
在我的本地计算机上对两个repos进行测试表明,不同存储库中的同一文件将具有相同的SHA ID。
检查并查看两个存储库中实际文件的SHA ID是否相同。如果他们是,那么我们需要弄清楚为什么他们可能会被转移,如果没有,那么找出原因。
答案 1 :(得分:1)
您需要提交相同的内容。即使树ID相同,提交ID也可能不同。
我现在能想到的是以下内容:
在一边进行(初始)提交。注意它的哈希。在.git/objects/
文件夹中找到哈希值。将文件复制到另一台PC。如果另一台PC有一个具有相同id的树,它应该工作
答案 2 :(得分:0)
我用sneakernet(好吧,carnet):拿一个你当地的下游git树把整个东西烧成DVD。在远程端,将DVD复制到磁盘。然后,如有必要,编辑.git / config的[remote“origin”]配置部分,以便repo仍然可以到达其上游。
答案 3 :(得分:0)
你使用什么协议,git或Http?
Git是slow when using the http protocol。如果您唯一的选择是http并且您需要DVCS,则可以尝试Mercurial。
如果你需要做的就是同步两个远程文件夹,你可以看看Beyond Compare