Cambio de las twigs de Git dentro de un proyecto de Android Repo

Tengo una pregunta sobre el cambio de sucursales utilizando repos . Sé que puedo pagar en una sucursal como esta:

repo init ... -b foo repo sync 

Tengo entendido que esto revisará la twig foo del repository de manifiestos y luego verificará los proyectos de git como se describe en el manifiesto.

También entiendo que puedo cambiar twigs como esta:

 repo init ... -b bar repo sync -d 

Mi pregunta es, ¿puedo cambiar de twig sin hacer repo init y repo sync cada vez, y cuáles son las implicaciones de hacerlo?

Déjame ilustrar con un ejemplo:

 repo init ... -b foo repo sync -d repo start foo-mytopic proj1 proj2 ... repo upload -t repo init ... -b bar repo sync -d repo start bar-topic proj1 proj3 repo upload -t cd proj1 git checkout foo-mytopic # IS THIS ALLOWED? 

He intentado esto antes, y parece funcionar, pero es un poco extraño porque ahora he comprobado el código que estaba en el manifiesto foo , pero mi twig de manifiesto actual es la barra . ¿Cuáles son las implicaciones de estar en una twig diferente a la descrita en el manifiesto?

Nota: He leído esto y creo que mi pregunta es diferente. Sé cómo cambiar de twigs. Me interesan las implicaciones de estar en una twig diferente a la que se describe en el manifiesto actual y cómo esto podría afectar mi flujo de trabajo.

Dado que nadie más fue capaz de responder a esto, hice más investigación y experimentación. Esto es lo que he encontrado:

Tl; dr – Ciertos commands harán cosas raras. Tenga cuidado al usar la repo sync repo start y el repo start . Intente seguir los simples commands de git. repo upload debería funcionar.

La documentation del repository dice que la synchronization del repository es equivalente a

 git remote update git rebase origin/<BRANCH> 

donde BRANCH es la twig actualmente desprotegida en el directory del proyecto local. Sin embargo, según mi propia experiencia, el repository también interferirá con la información de seguimiento ascendente para esa twig en function de lo que está en el manifiesto actual.

Para continuar con el ejemplo anterior, git checkout foo-mytopic está, de hecho, permitido y se comportará de forma adecuada. La carga de repository enviará cambios a la twig que foo-mytopic está rastreando ( foo ), pero la synchronization de repository cambiaría la información de seguimiento en sentido ascendente. En esta situación, puede ser mejor ejecutar manualmente git remote update git rebase origin/<BRANCH> y git rebase origin/<BRANCH> .

El manifiesto (y la twig) descritos por repo init no entrarán en juego de nuevo hasta que se ejecute repo sync o repo start .