例如,我在两台计算机上克隆了原始存储库。然后,我继续进行一些更改并提交到计算机 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 而不是远程名称,但如果您要定期从存储库中提取,将其添加为远程将节省您很多打字。)
看一下git pull --help
这会给出类似的东西git pull /my/other/repository
您可以使用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。
它适用于我在另一台计算机上的本地存储库:
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
有点太晚了,但尽管值得并扩展 Antoine Pelisse 答案,您还可以从具有相同 repo 的 ssh 主机中提取更多提交,而无需在配置中添加远程:
git pull user@host:/path/to/repo # while in the local repo folder
需要明确一点 - 一种可能的用途是当您有两台主机(A 和 B)从远程克隆相同的存储库,并且您已经在主机 A 上提交了一些更改并且不希望将它们推送到远程(还),而是想从主机 B 中提取这些提交。上面的命令与同步您的存储库而不推送到remote。
我想出了
git clone /path/to/local/repository