Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过“复制git回购协议”;sneakernet“;_Git - Fatal编程技术网

通过“复制git回购协议”;sneakernet“;

通过“复制git回购协议”;sneakernet“;,git,Git,我在我的VPS(虚拟专用服务器)上创建了一个裸git repo。然后,我对我的一台本地计算机进行了一次git克隆,称之为local1,添加了大量文件,提交了它们,并进行了git推送。所以我曾经通过互联网传输过这些文件(总共几GB) 现在,我想在其他一些本地机器上拥有相同的回购协议,但我想避免再次通过互联网将所有这些文件传输回去。我是否可以将repo从local1复制到USB驱动器上,然后将其复制到其他机器local2,local3,而不是使用git clone?还是有更好的方法 编辑:所有相关机

我在我的VPS(虚拟专用服务器)上创建了一个裸git repo。然后,我对我的一台本地计算机进行了一次
git克隆
,称之为local1,添加了大量文件,提交了它们,并进行了
git推送
。所以我曾经通过互联网传输过这些文件(总共几GB)

现在,我想在其他一些本地机器上拥有相同的回购协议,但我想避免再次通过互联网将所有这些文件传输回去。我是否可以将repo从local1复制到USB驱动器上,然后将其复制到其他机器local2local3,而不是使用
git clone
?还是有更好的方法


编辑:所有相关机器都已连接到internet。一旦建立了回购协议,我计划正常地
git push
git pull
,因为我一次只修改几个文件。这只是我关心的完整文件集的初始传输。

是的,您可以复制整个目录(确保复制包含所有“git元数据”的隐藏
.git
目录)

或者,您可以从一台本地计算机克隆到另一台本地计算机:

git clone local1-ip:/path/to/repository
最后,您只需更改origin的url即可指向您的VPS:

git remote set-url origin VPS:url.git

是的,您可以复制整个目录(确保复制包含所有“git元数据”的隐藏
.git
目录)

或者,您可以从一台本地计算机克隆到另一台本地计算机:

git clone local1-ip:/path/to/repository
最后,您只需更改origin的url即可指向您的VPS:

git remote set-url origin VPS:url.git

复制
.git
子目录的方法可以很好地创建克隆,但是您可以实现它(文件浏览器,
tar
cp
scp
,等等)。然而,这留下了一个问题:传输更新

有两种方法可以有效地传输新提交:

  • 如果两台机器都连接到internet,您可以从两台机器上推/拉以同步

  • 如果第二台机器空着,您仍然可以通过使用
    git bundle
    高效地接收新提交:

    git bundle create..master
    master
    之间的所有提交打包到一个捆绑文件中,然后您可以通过sneaker net将其传输到气隙机器。后续的
    git bundle解绑…
    git fetch…
    允许您将新提交接收到存储库中

    (我总是使用
    git bundle unbundle…
    ,因为我在
    git fetch
    无法按预期工作时遇到了一些问题。但是,
    git bundle unbundle
    不会为您更新任何引用,如果使用此变量,您需要手动修复分支。正如手册页正确指出的那样,它实际上是一个管道类型的命令。)


复制
.git
子目录的方法可以很好地创建克隆,但是您实现了它(文件浏览器,
tar
cp
scp
,等等)。然而,这留下了一个问题:传输更新

有两种方法可以有效地传输新提交:

  • 如果两台机器都连接到internet,您可以从两台机器上推/拉以同步

  • 如果第二台机器空着,您仍然可以通过使用
    git bundle
    高效地接收新提交:

    git bundle create..master
    master
    之间的所有提交打包到一个捆绑文件中,然后您可以通过sneaker net将其传输到空隙机器。随后的
    git bundle解绑…
    git fetch…
    允许您将新提交接收到存储库中

    (我总是使用
    git bundle unbundle…
    ,因为我在
    git fetch
    无法按预期工作时遇到了一些问题。但是,
    git bundle unbundle
    不会为您更新任何引用,如果使用此变量,您需要手动修复分支。正如手册页正确指出的那样,它实际上是一个管道类型的命令。)


只需复制repo文件,.git目录将保存所有修订和历史记录。您可以对gzip进行tar,然后将它们放在驱动器上,或者使用scp。如果其中一台机器上正在运行sshd,您可以使用rsync并跳过tar。只需复制repo文件,.git目录将保存所有修订和历史记录。您可以对gzip进行tar,然后使用如果其中一台机器上正在运行sshd,那么您可以使用rsync并跳过tar。这一点很好,谢谢。我编辑了这个问题来解释,一旦建立了repo,我将能够正常地推/拉git。但是我很高兴知道git捆绑包,您的回答也将对找到这个问题的其他人有所帮助uestion.hmm,我想知道是谁发现我的答案如此毫无帮助,以至于他们会投反对票。而且,最重要的是,为什么?很好的一点,谢谢。我编辑了这个问题来解释,一旦回购协议建立,我将能够正常推/拉git。但我很高兴知道git捆绑包,你的答案也将对其他发现这个问题的人有所帮助嗯,我想知道是谁发现我的答案毫无用处,以至于他们会投反对票。最重要的是,为什么?