58

I want to do git push origin and git push my_other_remote in the same line. Possible?

Ram Rachum
  • 77,567
  • 79
  • 223
  • 360
  • 1
    I don't think you can do this using the standard commands but you could write a `git-multipush` or something and use that. – Noufal Ibrahim Apr 11 '11 at 11:26
  • 1
    Possible duplicate of [pull/push from multiple remote locations](http://stackoverflow.com/questions/849308/pull-push-from-multiple-remote-locations) – techraf Aug 20 '16 at 00:30
  • 1
    Possible duplicate of [Able to push to all git remotes with the one command?](https://stackoverflow.com/questions/5785549/able-to-push-to-all-git-remotes-with-the-one-command) – Dave Everitt May 15 '19 at 16:26

3 Answers3

112

You can get the same effect by adding an extra push URL for your origin remote. For example, if the URLs of your existing remotes are as follows:

$ 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)

You could do:

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

Then, git push origin will push to both repositories. You might want to set up a new remote called both for this, however, to avoid confusion. For example:

 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

... then:

 git push both

... will try to push to both repositories.

barsanuphe
  • 322
  • 2
  • 7
Mark Longair
  • 415,589
  • 70
  • 403
  • 320
  • Does this also update the `remote/origin` and `remote/my_other_remote` tracking branches? – Paŭlo Ebermann Apr 11 '11 at 12:02
  • @Paŭlo Ebermann: my (very brief) testing suggests that `refs/remotes/origin/master` and `refs/remotes/my_other_remote/master` will be both be updated in the situation where the URLs of both are added as push URLs to `origin` and you do `git push origin`. – Mark Longair Apr 11 '11 at 13:21
  • 1
    this looks probably like what I am looking for, but I am still a bit confuse... How to proceed, if I wanna commit my app to Heroku and also to BitBucket? Firstly I have to create to repo and comiting to Heroku and then with the same way to create a repo on BitBucket, or what's the right way? – user984621 Mar 04 '12 at 10:33
19

You can put the following in the .git/config file:

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

You can now push to both urls using git push both.

If you also want to fetch from them (useful for sync) you may add the following lines in your .git/config file:

[remotes]
    both = origin, other

Now you can also run git fetch both.

Olivier Verdier
  • 44,254
  • 26
  • 97
  • 90
2

Just a small addition to the excellent answers provided already - if you dont want to bother with adding "both" and just want to have all operations pushed to both repos automatically, just add your second repo as another url under origin in the git config.

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

Now "git push" uses both.

Amc_rtty
  • 3,414
  • 10
  • 44
  • 70