¿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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta