【问题标题】:Git: Pushing to two repos in one commandGit:在一个命令中推送到两个存储库
【发布时间】:2019-10-15 20:15:53
【问题描述】:

我想在同一行中执行 git push origingit push my_other_remote。可能吗?

【问题讨论】:

标签: git


【解决方案1】:

您可以通过为您的origin 遥控器添加一个额外的推送 URL 来获得相同的效果。例如,如果您现有遥控器的 URL 如下:

$ git remote -v
origin  me@original:something.git (fetch)
origin  me@original:something.git (push)
my_other_remote git://somewhere/something.git (fetch)
my_other_remote git://somewhere/something.git (push)

你可以这样做:

 git remote set-url --add --push origin git://somewhere/something.git

然后,git push origin 将推送到两个存储库。但是,您可能希望为此设置一个名为 both 的新遥控器,以避免混淆。例如:

 git remote add both me@original:something.git
 git remote set-url --add --push both me@original:something.git
 git remote set-url --add --push both git://somewhere/something.git

...然后:

 git push both

... 将尝试推送到两个存储库。

【讨论】:

  • 这是否也更新了remote/originremote/my_other_remote 跟踪分支?
  • @Paŭlo Ebermann:我的(非常简短的)测试表明,refs/remotes/origin/masterrefs/remotes/my_other_remote/master 在两者的 URL 都作为推送 URL 添加到 origin 和你做git push origin
  • 这看起来可能像我正在寻找的东西,但我仍然有点困惑......如果我想将我的应用程序提交给 Heroku 和 BitBucket,如何继续?首先,我必须创建 repo 并提交到 Heroku,然后以相同的方式在 BitBucket 上创建 repo,或者正确的方法是什么?
【解决方案2】:

您可以将以下内容放入.git/config 文件中:

[remote "both"]
    url = url/to/first/remote
    url = url/to/other/remote

您现在可以使用git push both 推送到这两个网址。

如果您还想从它们获取(用于同步),您可以在您的.git/config 文件中添加以下行:

[remotes]
    both = origin, other

现在你也可以运行git fetch both

【讨论】:

  • 是您提供的解决方案与马克的解决方案基本相同(除了您通过手动编辑来完成),还是有其他区别?
【解决方案3】:

只是对已经提供的优秀答案的一个小补充 - 如果您不想麻烦添加“两者”并且只想将所有操作自动推送到两个存储库,只需将您的第二个存储库添加为源下的另一个 url混帐配置。

[remote "origin"]
    url = someUrl.git
    url = secondUrl.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

现在“git push”两者都使用。

【讨论】:

    猜你喜欢
    • 2010-09-14
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多