我在VPS (虚拟私有服务器)上创建了一个裸露的git。然后,我对我的一台本地机器执行了一个git clone,称为local1,添加了大量文件,提交了它们,并执行了git push。所以我曾经通过互联网传输过这些文件(总计几个GB)。
现在我想在其他一些本地机器上进行同样的回购,但我希望避免再次通过互联网将所有这些文件传输回来。我可以不使用git clone,只需将local1的回购复制到USB驱动器上,然后将其复制到其他机器-- local2、local3等等?还是有更好的方法来做这件事?
编辑:所有相关的机器都连接到互联网上。一旦设置了repos,我通常计划使用git push和git pull,因为我一次只修改几个文件。这只是我所关心的全部文件的初始传输。
发布于 2020-04-21 13:03:20
是的,您只需复制整个目录(确保复制包含所有"git元数据“的隐藏.git目录)。
或者,您可以从一台本地机器克隆到另一台机器:
git clone local1-ip:/path/to/repository最后,您只需更改原产地的url以指向您的VPS:
git remote set-url origin VPS:url.git发布于 2020-04-21 13:20:41
复制.git子目录的方法可以很好地创建克隆,但是您可以实现它(文件浏览器、tar、cp、scp等等)。然而,这留下了一个问题:传输更新。
有两种有效传递新提交的方法:
如果两台机器都连接到互联网上,您可以从这两台机器上按/拉到synchronize.
git bundlegit bundle create <path/to/new/file/on/stick.bundle> <old-master>..master将<old-master>和master之间的所有提交打包到一个捆绑文件中,从而有效地摄取新的提交,然后您可以通过运动鞋将该文件传输到气隙机器。后续的git bundle unbundle ...或git fetch ...允许您在存储库中摄取新的提交。(我总是使用git bundle unbundle ...,因为我在git fetch上遇到了一些问题,不能像预期的那样工作。但是,git bundle unbundle不会为您更新任何引用,如果使用此变体,则需要手动修复分支。它确实是一个管道类型的命令,正如手册中正确指出的那样。)。
https://stackoverflow.com/questions/61344016
复制相似问题