This is undocumented, and possibly even a bug, but it’s something I’ve been using for quite a while without bad consequences. araqnid’s solution is the proper one for bringing code into your repository… but when you, like me, have multiple equivalent authoritative upstreams (I keep some of my more critical projects cloned to both a private upstream, GitHub, and Codaset), it can be a pain to push changes to each one, every day.
Long story short, git remote add
all of your remotes individually… and then vim .git/config
and add a merged‐remote. Assuming you have this repository config
:
[remote "GitHub"]
url = [email protected]:elliottcable/Paws.o.git
fetch = +refs/heads/*:refs/remotes/GitHub/*
[branch "Master"]
remote = GitHub
merge = refs/heads/Master
[remote "Codaset"]
url = [email protected]:elliottcable/paws-o.git
fetch = +refs/heads/*:refs/remotes/Codaset/*
[remote "Paws"]
url = [email protected]:Paws/Paws.o.git
fetch = +refs/heads/*:refs/remotes/Paws/*
… to create a merged‐remote for "Paws"
and "Codaset"
, I can add the following after all of those:
[remote "Origin"]
url = [email protected]:Paws/Paws.o.git
url = [email protected]:elliottcable/paws-o.git
Once I’ve done this, when I git push Origin Master
, it will push to both Paws/Master
and Codaset/Master
sequentially, making life a little easier.