【问题标题】:Pushing a branch to multiple remotes将分支推送到多个遥控器
【发布时间】:2018-12-29 07:36:36
【问题描述】:

假设有两个远程存储库(A、B)并且有一个分支 master(以及其他)。 第一个存储库 A 具有所有分支,而另一个存储库 B 必须只有一个 masterB。

如何使用单个“git push”命令将本地分支 master 推送到两个远程存储库? (映射A:master->master;映射B:master->masterB)


到目前为止尝试过:

[remote "A"]
    url = <urlA>
    fetch = +refs/heads/*:refs/remotes/A/*
[remote "B"]
    url = <urlB>
    fetch = +refs/heads/*:refs/remotes/B/*
    push = master:masterB
[branch "master"]
    remote = A
    merge = refs/heads/master
    pushRemote = A
    pushRemote = B //this overrides the previous push remote; how can I use both ?

The reference 表示可以有多个“pushRemote”条目。

【问题讨论】:

  • 你能告诉我们你用这个做什么吗?如果是部署,有更好的方法来处理部署。

标签: git git-branch git-push


【解决方案1】:

您的教程确实提到:

然后 git 允许分支有多个 branch.&lt;name&gt;.pushRemote 条目。
您必须编辑 .git/config 文件才能设置它们。

这在git config branch.&lt;name&gt;.pushRemote 中并不明显

在分支上时,它覆盖 branch.&lt;name&gt;.remote 进行推送。
它还覆盖 remote.pushDefault 以从分支 &lt;name&gt; 推送。

当您从一个地方(例如您的upstream)拉取并推送到另一个地方(例如您自己的发布存储库)时,您需要设置remote.pushDefault 来指定要推送到所有分支的远程,并使用此选项为特定分支覆盖它。

因此使用脚本管理该案例比调整 git config 设置更容易。

【讨论】:

  • 感谢您的回答。我已经用脚本解决了这个问题,但我希望我可以通过配置来实现这一点,这样我就可以使用例如Visual Studio 内置 git 支持,无需担心以后运行脚本。你能给我一个例子我应该在上面的配置中改变什么来实现这个吗?
  • @dajuric 你可以试试stackoverflow.com/a/14290145/6309:这不是 one 分支特有的,但仍然可以提供帮助。
  • 谢谢。看到了;不允许为另一个远程仓库重命名分支。我赞成你的回答。非常感谢!
猜你喜欢
  • 2022-06-23
  • 1970-01-01
  • 2016-11-08
  • 2017-12-20
  • 1970-01-01
  • 2016-06-17
  • 2016-11-02
  • 2014-08-11
  • 2017-12-16
相关资源
最近更新 更多