【问题标题】:How do I pull from another computer's repository in Git?如何在 Git 中从另一台计算机的存储库中提取?
【发布时间】:2011-05-07 01:55:44
【问题描述】:

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

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

【问题讨论】:

  • 在我看来,如果它在另一台计算机上,它就不是真正的本地存储库:因此@Antoine 的answer 更符合您的问题标题......
  • …而@Amber 的answer 与您问题叙述的澄清细节相匹配。
  • 我希望这个问题有 Windows 答案

标签: git git-pull


【解决方案1】:

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

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

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

【讨论】:

  • 那么来自computer_b的推送呢? computer_b 会正常推送更改吗? “混帐推”?
  • 对于本地仓库,您可以使用相同的东西,但将远程路径设置为file:///local/path/to/repo/.git/
  • 这对我不起作用,URL 必须是/path/to/repository/.git/
【解决方案2】:

看看git pull --help

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

【讨论】:

  • 具体来说,在 GIT URLS 部分下,它说:“对于本地存储库,也由 git 本机支持,可以使用以下语法:/path/to/repo.git/, @987654324 @"
【解决方案3】:

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

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

git bundle create file.bundle master

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

git pull file.bundle HEAD

【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

    • 这对我有帮助,但我需要在克隆之前启用远程登录。
    【解决方案5】:

    有点太晚了,但尽管值得并扩展 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 .

    【讨论】:

    • 您当然可以拥有多个遥控器。因此,在主机 A 上,我将配置两个遥控器:一个称为 origin,它是您从中克隆的位置,另一个称为 B,它是主机 B 上的存储库
    • @MartinBonner 我知道你可以,这在接受的答案中有明确说明。我只是说你不必这样做。看起来接受的答案已更新为相同的状态。
    • 我发现这实际上非常有用
    【解决方案6】:

    它适用于我在另一台计算机上的本地存储库:

    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 列出所有远程分支
    【解决方案7】:

    我想出了

    git clone /path/to/local/repository
    

    【讨论】:

      猜你喜欢
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多