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


77

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

我正在寻找的内容相当于有人手动创建补丁并将其发送给我,我可以将其应用于我的工作副本/本地存储库。


4
我认为,如果它位于另一台计算机上,则不是真正的本地存储库:因此,@ Antoine的答案更好地匹配了您的问题的标题……
RubyTuesdayDONO 2014年

…而@Amber的答案与问题叙述的澄清细节相吻合。
RubyTuesdayDONO 2014年

1
我希望这个问题有Windows答案
Brandon

Answers:


109

如果您可以通过来访问要从中拉取的计算机,则可以ssh通过ssh将存储库添加为远程计算机,然后像从任何远程计算机一样从其拉计算机:

$ git remote add repo_b username@host:path/to/repository.git
$ git pull repo_b master

(您可以跳过添加远程的步骤,而只需在git pull命令中指定完整的URL而不是远程名称,但是如果您要定期从存储库中提取,则将其添加为远程可以节省您的时间。很多打字。)


1
以及来自computer_b的推送如何?computer_b将按常规推送更改吗?“ git push”?
Obaid Maroof,2014年

15
对于本地存储库,您可以使用相同的东西,但是将远程路径设置为file:///local/path/to/repo/.git/
exa 2015年

2
这对我不起作用,该网址必须为/path/to/repository/.git/
AyberkÖzgür18年

35

看一下 git pull --help

这会给像 git pull /my/other/repository


7
具体而言,根据部分GIT URLS,它说:“对于本地资源库,也git的原生支持,可使用以下语法:/path/to/repo.git/file:///path/to/repo.git/
jemmons

11

您可以使用git daemon设置实际的服务器。否则,您可以使用git bundle,它将git的内部表示形式捆绑到一个文件中,该文件可以git pull在另一端解除捆绑。

例如从git docs,捆绑所有内容:

git bundle create file.bundle master

然后,在另一端,您可以执行以下操作:

git pull file.bundle HEAD

7

如果可以通过ssh连接到计算机B,则可以使用:

git clone user@host:/path/to/repo

它将通过此​​ssh连接启用远程跟踪,并允许您使用git pull / push。


2

有点晚了,但是为了所有它的价值并扩展Antoine Pelisse的答案,您还可以从具有相同回购协议的ssh主机中提取几个提交,而无需在配置中添加远程

git pull user@host:/path/to/repo  # while in the local repo folder

只需说明一下-可能的用途之一是,当您有两个主机(A和B)从远程克隆了相同的存储库,并且您已经在主机A上进行了一些更改,并且不希望将它们推送到远程(尚未),但想从主机B中提取那些提交。上面的命令与您的存储库同步,而无需推送到remote


您当然可以有多个遥控器。因此,在主机A上,我将配置两个远程控制器:一个称为Origin,它是您从中克隆的远程主机,一个称为B的主机,它是主机B上的存储库
Martin Bonner支持Monica 18'19

@MartinBonner我知道您可以,已接受的答案中已明确说明。我只是说您不必这样做。似乎已将接受的答案更新为相同的状态。
Alex

1
我发现这实际上非常有用
Bart van Kuik

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

您可以使用以下命令列出所有远程分支:git ls-remote origin_username
McQuade

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.