Maneja una misma base de código, diferentes versiones de la aplicación en git

Desarrollé una aplicación general , porque necesito crear una aplicación muy similar. Traté de separar las diferencias , así que tengo un settings.xml . Pero no es suficiente porque a veces necesito cambiar el código en una versión, pero realmente quiero tener la misma base de código para cada aplicación.

Quiero alcanzar mi objective principal, así que si desarrollo la misma base de código, entonces se actualiza toda la versión de la aplicación . Pero tengo dificultades para manejar las diferencias .

Necesito sus sugerencias, cómo debería manejar esto en git . ¿Debo crear un brach para cada versión de la aplicación ? ¿Cómo debo manejar las diferentes cosas (nombre de la aplicación, icono, nombre del package, settings.xml, tal vez diferentes partes del código) y aún ser capaz de desarrollar la misma base de código y actualizar cada versión de la aplicación.

Tal vez un script buildserver puede manejar algunos files de reemploop, pero no puede manejar las diferentes versiones de código.

¿Hay alguien con el mismo problema? Tal vez una solución de trabajo?

Para una base de código común, con pocos files diferentes, una aplicación por twig es el enfoque recomendado (mucho más simple que los submodules ).

Puede ver un ejemplo en " Varios sitios de Django con base de código compartida y database ".

El problema con este enfoque es evitar que cualquier combinación de la twig de la app master (solo debe fusionarse de la app master a la app ).
Un pre-commit puede ayudar .
Y puede proteger sus files específicos con .gitattributes en la twig de la app .