如何从Git中的另一台计算机存储库中提取?

时间:2010-11-09 06:52:13

标签: git git-pull

例如,我在两台计算机上克隆了原始存储库。然后,我继续进行一些更改并提交到计算机A的本地存储库。我现在如何将这些更改提取到计算机B?计算机A和B都连接到网络。

我正在寻找的是相当于某人手动创建补丁并将其发送给我,我可以将其应用于我的工作副本/本地回购。

7 个答案:

答案 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而不推送到远程