git strategy para proyecto con 2 twigs que nunca deberían fusionarse

Nota: vea la parte Editar de inmediato para una mejor explicación

Soy nuevo en el uso de GIT, así que me disculpo de antemano si no uso la terminología correcta (todavía estoy aprendiendo).

Estoy usando BitBucket ya que por ahora solo quiero proyectos privados.

Me gustaría saber cuál sería la mejor estrategia para hacer lo siguiente:

Tengo una aplicación Phonegap / Cordova (por lo que es principalmente HTML + JS) para Android. Ahora, quiero usar ese proyecto para crear una aplicación de iOS. La mayor parte del código será el mismo, pero habrá cosas específicas de la plataforma que tendré que cambiar en el código para que funcione en iOS.

Mi idea sería poder:

  1. Haga una "twig" (¿o tenedor?) De la versión de Android donde puedo editar lo que sea necesario para iOS. Este brach nunca se fusionaría de nuevo en la versión de Android.

  2. Cada vez que actualizo la versión de Android, puedo fusionar esas cosas en la twig de iOS.

De esa manera, siempre puedo utilizar la versión de Android como "maestro", aplicar cualquier corrección de errores, nuevas características, etc., y luego "aplicarlos automáticamente a la versión de iOS, manteniendo intactas las líneas de código específicas de la plataforma.

Entonces, de lo que no estoy seguro es de cómo tengo que configurar conceptualmente y usar GIT con este proyecto para poder mantener esas twigs separadas, ya que todo lo que he estado mirando cuando se trata de sucursales parece terminar fusionando esas en el maestro, que es exactamente lo que no quiero hacer.

Por supuesto que podría hacer todo esto de forma manual, pero si puedo usarlo para aprender GIT sería una gran manera, ¡y útil!

¡Gracias por adelantado!

——-> EDITAR

Las respuestas que recibo son excelentes ideas, pero creo que no me expliqué muy bien, así que trataré de usar otro ejemplo. La razón es que creo que lo que tengo en mente se puede usar para muchos otros proyectos, no solo el que expliqué anteriormente, por lo que realmente me gustaría saber si es posible y cómo.

Este es otro ejemplo:

Pensemos en AOSP (Android Open Source Project) y todos los ROM personalizados creados por cientos de desarrolladores. Todos usan la misma fuente (AOSP o variaciones de ella), la clonan y agregan sus modificaciones personalizadas al SO en su propio repository. Entonces, cada vez que hay una actualización en la fuente AOSP, solo necesitan "actualizar" su clon, pero manteniendo lo que ya han implementado en su extremo.

Siguiendo la analogía con mi primer ejemplo, mi aplicación de Android sería el código fuente de AOSP, y mi aplicación de iOS sería el clon.

Entonces, ¿debería usar de alguna manera 2 repositorys? ¿O twigs / tenedores? Esa es la parte que me confunde …

Creo que confundes el control de fuente (git) con la configuration de compilation (cualquiera que sea la herramienta de compilation que uses). ¿Por qué no simplemente crear dos carpetas, / android y / ios, y poner las cosas específicas de la plataforma allí?

¿La aplicación de Android y la aplicación iOS compartirán algún file?

De lo contrario, recomendaría dos repositorys separados para cada uno de los proyectos.

¿Hay muchos files compartidos?

De ser así, utilice un repository y carpetas discretas para cada proyecto:

my-awesome-project/ |____ docs/ |____ readme.md |____ site/ |____ index.html |____ shanetworking/ |____ my-app.rb |____ ios/ |____ xcode stuff |____ android/ |____ cordova/phonegap stuff