¿Hay flujo de trabajo en git para compartir el mismo file en múltiples twigs?

Tengo un proyecto dirigido a plataforma múltiple. Tengo que cambiar los códigos de UI para diferentes plataforms mientras mantengo las classs principales iguales. Para lograr esto, pensé en hacer git branches para diferentes plataforms.

Dado el escenario anterior, mi requisito es que, si realizo cambios en las classs principales, debería reflejarse en todas las twigs de git.

¿Cómo lograr esto?

¿O hay algún otro flujo de trabajo para lograr lo mismo?

Via git rebase

Puede manejar su plataforma específica a través de git rebase lugar de git merge . En este caso, podrá cambiar la twig principal y volver a basar otras twigs en ella, manteniendo las modificaciones específicas de la plataforma aplicadas sobre el núcleo.

Ejemplo de flujo de trabajo.

Hacer sucursales en la plataforma

 git checkout master git checkout -b platform1 git checkout master git checkout -b platform2 

Haga modificaciones principales

 git checkout master # make modification git commit 

Hacer modificaciones de la plataforma

 git checkout platform2 # make modification git commit 

Importar cambios principales en las plataforms

 git checkout platform1 git rebase master git checkout platform2 git rebase master 

Via git merge

También es posible usar git merge con la opción de strategy como se indica en el manual de git merge .

 git checkout platform2 git merge -s recursive -X ours master 

Esto siempre elegirá cambios específicos de plataforma en caso de conflictos.

No hay tal cosa en git.

Si realmente buscas la solución git, te sugiero crear una twig "común" y fusionar todas tus twigs.

Siempre confíe los cambios al código común a la twig "común" y combínelos con las twigs de la plataforma, de esta forma evitará conflictos y fusionará cosas que no desea (o puede seleccionarlas de forma inteligente).

También creo que podría hacer que el file de commons sea de solo lectura en las twigs de la plataforma para evitar que se modifique sin ser abofeteado.

CONS: Tedious, pero debería funcionar.

Alternativamente, use diferentes subdirectorys para cada plataforma y permita que su sistema de compilation obtenga los files correctos para cada compilation.

CONTRAS: No obtendrá fusiones como con las sucursales de GIT.