【发布时间】:2011-05-07 01:55:44
【问题描述】:
例如,我在两台计算机上克隆了原始存储库。然后,我继续进行一些更改并提交到计算机 A 的本地存储库。我现在如何将这些更改拉到计算机 B?计算机 A 和 B 都连接到网络。
我正在寻找的内容相当于手动创建补丁并将其发送给我,我可以将其应用于我的工作副本/本地存储库。
【问题讨论】:
例如,我在两台计算机上克隆了原始存储库。然后,我继续进行一些更改并提交到计算机 A 的本地存储库。我现在如何将这些更改拉到计算机 B?计算机 A 和 B 都连接到网络。
我正在寻找的内容相当于手动创建补丁并将其发送给我,我可以将其应用于我的工作副本/本地存储库。
【问题讨论】:
如果您要从中拉取的机器可以通过ssh 访问,您可以通过 ssh 将存储库添加为远程,然后像使用任何远程一样从它拉取:
$ git remote add repo_b username@host:path/to/repository.git
$ git pull repo_b master
(您可以跳过添加远程的步骤,只需在 git pull 命令中指定完整的 URL 而不是远程名称,但如果您要定期从存储库中提取,请添加它作为遥控器,您可以节省大量打字时间。)
【讨论】:
file:///local/path/to/repo/.git/
/path/to/repository/.git/。
看看git pull --help
这会给出类似git pull /my/other/repository
【讨论】:
/path/to/repo.git/, @987654324 @"
您可以使用git daemon 设置实际服务器。否则,您可以使用git bundle,它将 git 的内部表示捆绑到一个文件中,该文件可以与另一端的git pull 解绑。
例如来自 git 文档,捆绑所有内容:
git bundle create file.bundle master
然后,在另一端,您可以执行以下操作:
git pull file.bundle HEAD
【讨论】:
如果你可以通过ssh连接到计算机B,你可以使用:
git clone user@host:/path/to/repo
它将通过此 ssh 连接启用远程跟踪,并允许您使用 git pull/push。
【讨论】:
有点太晚了,但尽管值得并扩展 Antoine Pelisse 的答案,您还可以从具有相同 repo 的 ssh 主机中提取更多提交,而无需添加 remote 到您的配置:
git pull user@host:/path/to/repo # while in the local repo folder
要明确一点 - 这可能的用途之一是当您有两个主机(A 和 B)从 remote 克隆相同的 repo,并且您已经在主机上提交了一些更改A 并且不希望将它们推送到 remote(还),而是希望从主机 B 中提取这些提交。上面的命令同步您的存储库而不推送到 remote .
【讨论】:
它适用于我在另一台计算机上的本地存储库:
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 clone /path/to/local/repository
【讨论】: