例如,我在两台计算机上克隆了原始存储库。然后,我继续进行一些更改并提交到计算机A的本地存储库。我现在如何将这些更改提取到计算机B?计算机A和B都连接到网络。
我正在寻找的是相当于某人手动创建补丁并将其发送给我,我可以将其应用于我的工作副本/本地回购。
答案 0 :(得分:99)
如果你想要拉出的机器可以通过ssh
访问,你可以通过ssh将其作为远程存储器添加到其中,然后像任何遥控器一样从中拉出:
$ git remote add repo_b username@host:path/to/repository.git
$ git pull repo_b master
(您可以跳过添加远程的步骤,只需在git pull
命令中指定完整的URL而不是远程名称,但是如果您要定期从存储库中提取,将其添加为遥控器可以节省大量的输入。)
答案 1 :(得分:35)
查看git pull --help
这会提供类似git pull /my/other/repository
答案 2 :(得分:11)
您可以使用git daemon设置实际服务器。否则,您可以使用git bundle,它将git的内部表示捆绑到一个文件中,该文件可以在另一端与git pull
分开。
E.g。从git docs,捆绑所有内容:
git bundle create file.bundle master
然后,在另一端,您可以执行以下操作:
git pull file.bundle HEAD
答案 3 :(得分:7)
如果您可以通过ssh连接到计算机B,则可以使用:
git clone user@host:/path/to/repo
它将通过此ssh连接启用远程跟踪,并允许您使用git pull / push。
答案 4 :(得分:2)
它适用于我与另一台计算机的本地存储库:
git remote add origin_username username@10.0.0.2:/home/username/dev/project/main/.git/
git pull origin_username master
或
git pull origin_username some_branch
答案 5 :(得分:0)
我想出了
git clone /path/to/local/repository
答案 6 :(得分:0)
有点太晚了,但是为了所有的价值和扩展Antoine Pelisse的答案,你也可以从具有相同repo的ssh主机中提取几个提交,而不添加远程到你的配置:
git pull user@host:/path/to/repo # while in the local repo folder
只是要清楚 - 当你有两个主机(A和B)克隆来自远程的相同仓库时,可能的用途之一是你已经提交了一些更改在主机A上并且不希望将它们推送到远程(还),而是希望从主机B提取这些提交。上面的命令同步你的repos而不推送到远程强>