80

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

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

4

7 回答 7

113

如果您要从中提取的机器可以通过 访问ssh,您可以通过 ssh 将存储库添加为远程,然后像使用任何远程一样从中提取:

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

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

于 2010-11-09T07:07:51.740 回答
36

看一下git pull --help

这会给出类似的东西git pull /my/other/repository

于 2010-11-09T07:02:07.397 回答
11

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

例如,来自 git 文档,捆绑所有内容:

git bundle create file.bundle master

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

git pull file.bundle HEAD
于 2010-11-09T06:58:38.833 回答
8

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

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

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

于 2010-11-09T07:10:20.673 回答
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
于 2016-07-13T12:35:53.897 回答
2

有点太晚了,但尽管值得并扩展 Antoine Pelisse 答案,您还可以从具有相同 repo 的 ssh 主机中提取更多提交,而无需在配置中添加远程

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

需要明确一点 - 一种可能的用途是当您有两台主机(A 和 B)从远程克隆相同的存储库,并且您已经在主机 A 上提交了一些更改并且不希望将它们推送到远程(还),而是想从主机 B 中提取这些提交。上面的命令与同步您的存储库而不推送到remote

于 2017-11-20T11:35:22.250 回答
0

我想出了

git clone /path/to/local/repository
于 2017-04-27T05:01:22.860 回答