GIT Hacer que la ramificación local sea extraída de remote1 / master y empujar a remote2 / legacy

He visto que puedes agregar un control remoto y decir que su empuje es otro control remoto.

Por ejemplo, si configuro mi origen como

git remote add origin git@github.com:newrepo/newrepo.git 

Puedo agregar un nuevo control remoto y establecer su pushurl en mi origen:

 git remote add oldremote git@github.com:oldrepo/oldrepo.git git remote set-url --push oldremote git@github.com:newrepo/newrepo.git 

Entonces, si creo una twig branch1 desde oldremote/branch1

 git fetch oldremote branch1 git checkout -b branch1 oldremote/branch1 

oldremote/branch1 de oldremote/branch1 y push a origin/branch1

Esto funciona como se esperaba Haciendo git pull pulls de oldremote (y dice que estamos actualizados) y empuja a origin . Bonito y fácil.

Ahora bash crear una twig que no tenga el mismo nombre que su twig remota. En segundo lugar, quiero rastrear oldremote/master como legacy sucursal local, y hacer que esta twig local oldremote/master al origin/legacy .

 git fetch oldremote master git checkout -b legacy oldremote/master 

Ahora, esto tiene dos efectos secundarios.

Primero, hacer git push no empuja al origin/legacy . Tengo que hacer git push origin legacy .

En segundo lugar, hacer git pull no solo oldremote/master y fusiona desde oldremote/master . oldremote todas las twigs de oldremote .

TL / DR

¿Hay alguna manera de tirar de una twig en un control remoto y pulsar otra twig en otro control remoto cuando los nombres de las twigs son diferentes?

 git config branch.legacy.remote oldremote git config branch.legacy.pushremote origin git config branch.legacy.merge refs/heads/master 

git config --local -e debería verse así:

 [remote "oldremote"] url = git@github.com:oldrepo/oldrepo.git fetch = +refs/heads/*:refs/remotes/oldremote/* [remote "origin"] url = git@github.com:newrepo/newrepo.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = oldremote merge = refs/heads/master [branch "legacy"] remote = oldremote pushremote = origin merge = refs/heads/master 

Tenga en count que el valor de push.default debe ser desarmado o simple . Como dice el manual, simple ha convertido en el pnetworkingeterminado en Git 2.0. Si su valor no es simple o no está configurado, git push puede fallar.