Eu tenho muitos projetos bifurcados em minha conta do github, assim como a maioria de nós. É o que eu uso para manter meu master sincronizado com o master upstream. Funciona particularmente bem com o Openstack, porque há uma tonelada de projetos que são atualizados constantemente.
Primeiro, configure seu mestre upstream (depois de bifurcar e clonar o seu próprio):
git remote add upstream git://github.com/user/repo.git
Então, em meu .bash_profile, adicionei as seguintes funções:
gitreporefresh() {
for i in `ls $HOME/dev/repos`; do
_gitreporefreshone $i &
done
}
_gitreporefreshone() {
cd $HOME/dev/repos/$i
git pull upstream master
git add .
git commit -a -m "resync upstream on `date`"
git push
cd -
}
Eu não trabalho com o mestre do meu fork, apenas ramifico tudo e mesclo de volta com frequência. Se você deseja mesclar fontes múltiplas (digamos, seu fork mestre e o upstream) você pode usar algo assim. Além disso, não se esqueça de rebase!
git fetch origin
git fetch upstream
git merge upstream/master