我们可以在不同的远程存储库中设置分支的上游

时间:2019-01-12 19:09:16

标签: git

在配置文件中,将分支设置为在远程存储库中具有上游

[branch "mybranch"]
    remote = myremote
    merge = refs/heads/mybranch

我们可以在第三个远程存储库中建立上游,以便当当前分支为mybranch时,git push <remote>在没有为分支指定refspec的情况下工作吗?例如,以下工作有效吗?

[branch "mybranch"]
    remote = myremote
    merge = refs/heads/mybranch

[branch "mybranch"]
    remote = yourremote
    merge = refs/heads/mybranch

谢谢。

1 个答案:

答案 0 :(得分:1)

  

例如,以下工作有效吗?

[branch "mybranch"]
    remote = myremote
    merge = refs/heads/mybranch

[branch "mybranch"]
    remote = yourremote
    merge = refs/heads/mybranch

不。 Git配置文件 具有足够的灵活性来支持此功能,尽管不需要第二部分。也就是说,您可以这样写:

[branch "mybranch"]
    remote = myremote
    remote = yourremote
    merge = refs/heads/mybranch

但是Git的只有一部分使用了多种设置。 1 特别是git push命令决定您是否指定了一个遥控器,如果没有,请指定它。获取branch.branch.remote last 设置(其中 branch 是当前分支)。然后,它决定您是否指定了refspec,如果没有,则使用push.default设置来决定如何根据您的 branch要求另一个Git更新其名称之一的当前提交。所以:

  • 如果您指定 remote 自变量,则这两个远程设置无关;
  • 如果不是,则Git取最后一个

这意味着除最后一个设置以外的所有设置都不相关。

(有多种使用三角形工作流程的方法,您可以从一个存储库中获取但推送到另一个存储库,但这不是一个。使用google search查找其中的一个。)


1 git fetch命令是使用的命令,它使用多种设置:对于任何给定的遥控器,它都需要使用所有的fetch = ...设置,当它执行默认值git fetch时。那就是:

[remote "origin"]
    fetch = +refs/heads/master:refs/remotes/origin/master
    fetch = +refs/heads/develop:refs/remotes/origin/develop

生成一个存储库,其行为类似于单分支克隆,只是我们可以称之为两分支克隆。