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

时间:2011-04-11 11:19:47

标签: git

我希望在同一行中git push origingit push my_other_remote。可能的?

3 个答案:

答案 0 :(得分:91)

您可以通过为origin遥控器添加额外的推送网址来获得相同的效果。例如,如果现有远程控制器的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

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

答案 1 :(得分:13)

您可以将以下内容放在.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

答案 2 :(得分:0)

仅在已提供的出色答案中添加了少量内容-如果您不想为添加“ both”和“ both”而烦恼,并且只想将所有操作自动推送到两个存储库,只需将第二个存储库作为另一个URL添加到git配置

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

现在“ git push”同时使用了两者。