Pushing to multiple Git remotes at onceEdit
For example, consider a clone of my dotfiles repo that has these two remotes, origin
and github
:
$ git remote -v
github git@github.com:wincent/wincent.git (fetch)
github git@github.com:wincent/wincent.git (push)
origin git@git.wincent.dev:public/wincent.git (fetch)
origin git@git.wincent.dev:public/wincent.git (push)
We can add a new all
remote:
$ git remote add all git@git.wincent.dev:public/wincent.git
And then set two pushurl
URLs for it:
$ git remote set-url --add --push all git@git.wincent.dev:public/wincent.git
$ git remote set-url --add --push all git@github.com:wincent/wincent.git
Yielding the following:
$ git remote -v
all git@git.wincent.dev:public/wincent.git (fetch)
all git@git.wincent.dev:public/wincent.git (push)
all git@github.com:wincent/wincent.git (push)
github git@github.com:wincent/wincent.git (fetch)
github git@github.com:wincent/wincent.git (push)
origin git@git.wincent.dev:public/wincent.git (fetch)
origin git@git.wincent.dev:public/wincent.git (push)
This is the full config for the all
remote as seen in the clone’s .git/config
:
[remote "all"]
url = git@git.wincent.dev:public/wincent.git
fetch = +refs/heads/*:refs/remotes/all/*
pushurl = git@git.wincent.dev:public/wincent.git
pushurl = git@github.com:wincent/wincent.git
When we push, we see (something like) the following, which shows the two remotes being processed in sequence:
$ git push all --dry-run
Everything up-to-date
Everything up-to-date
Via: