Mantendo seus github forks em sincronia

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