Git:在一个命令中推送两个repos

Ram*_*hum 46 git

我想要做的git push origingit push my_other_remote在同一直线上.可能?

Mar*_*air 97

您可以通过为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)
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

 git remote set-url --add --push origin git://somewhere/something.git
Run Code Online (Sandbox Code Playgroud)

然后,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
Run Code Online (Sandbox Code Playgroud)

... 然后:

 git push both
Run Code Online (Sandbox Code Playgroud)

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


Oli*_*ier 14

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

[remote "both"]
    url = url/to/first/remote
    url = url/to/other/remote
Run Code Online (Sandbox Code Playgroud)

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

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

[remotes]
    both = origin, other
Run Code Online (Sandbox Code Playgroud)

现在你也可以跑git fetch both.

  • 您提供的解决方案与Mark的解决方案基本相同(除非您通过手动编辑实现),还是有其他区别吗? (7认同)
  • 没有区别. (2认同)