¿Cómo mantiene los cambios separados y aislados en múltiples entornos de implementación en git?
En mi lugar de trabajo, estamos intentando diseñar un flujo de trabajo basado en Git para manejar nuestras implementaciones y cambios en el código.
Tenemos una aplicación web Java EE y 3 entornos de implementación (prueba, control de calidad y producción). También tenemos una instancia de Jenkins CI para manejar construcciones e implementaciones.
Cuando se realizan cambios en el código de la aplicación (en sucursales), debemos poder seleccionar y elegir cuáles se promocionan a Control de calidad y Producción. Algunos pueden llegar al control de calidad y luego nunca ir a la producción.
También debemos ser inmunes a incluir accidentalmente el código de todos los demás en su sucursal al promocionar y fusionar.
La "promoción" de las sucursales también debe ser automatizada, de manera que un analista seleccione la sucursal o el conjunto de cambios y luego jenkins o algún otro script haga la fusión y el despliegue reales. Veo que los conflictos de fusión son un problema aquí ...
¿Cómo recomendaría configurar (a) repositorio (es) Git para manejar estos requisitos?