Pushing to Multiple Git Repos
If a project has to have multiple git repos (e.g. Bitbucket and Github) then it's better that they remain in sync.
Usually this would involve pushing each branch to each repo in turn, but actually Git allows pushing to multiple repos in one go.
If in doubt about what git is doing when you run these commands, just
.git/config (git-config(1)) and see what it's put there.
Suppose your git remotes are set up like this:
git remote add github email@example.com:muccg/my-project.git git remote add bb firstname.lastname@example.org:ccgmurdoch/my-project.git
origin remote probably points to one of these URLs.
Remote Push URLs
To set up the push URLs do this:
git remote set-url --add --push origin email@example.com:muccg/my-project.git git remote set-url --add --push origin firstname.lastname@example.org:ccgmurdoch/my-project.git
It will change the
remote.origin.pushurl config entry. Now pushes
will send to both of these destinations, rather than the fetch URL.
Check it out by running:
git remote show origin
A branch can push and pull from separate remotes. This might be useful
in rare circumstances such as maintaining a fork with customizations
to the upstream repo. If your branch follows
github by default:
git branch --set-upstream-to=github next_release
(That command changed
Then git allows branches to have multiple
entries. You must edit the
.git/config file to set them.
You can't pull from multiple remotes at once, but you can fetch from all of them:
git fetch --all
Note that fetching won't update your current branch (that's why
git-pull exists), so you have to merge -- fast-forward or
For example, this will octopus merge the branches if the remotes got out of sync:
git merge github/next_release bb/next_release
git remote set-url --add --push origin <...>
It's that simple