Git se ramifica en diferentes ambientes

Soy nuevo en git y estoy tratando de establecer un flujo de git en diferentes entornos. Tengo un entorno de producción que tiene los repositorys centrales con ganchos de recepción posterior con la twig principal, una twig de desarrollo para el server de desarrollo y un entorno de testing con las twigs de publicación para el entorno de testing. Mi idea y no sé si es correcta es para las personas que trabajan en el entorno de desarrollo realizan la testing de testing y luego ingresan en la twig principal (producción).

Mi pregunta es ¿cómo trabajas con diferentes twigs en diferentes entornos? Usted ha clonado repos en el desarrollo con la ejecución de la twig de desarrollo y una clonación del repository central en el entorno de testing para la twig de versión o testing y después de que los desarrolladores realicen los cambios vamos a estos entornos y hacemos git pull –all?

¿Cuál es la mejor práctica? Sé que cada desarrollador hace un repo de clonación. Toma los cambios y luego empuja los cambios. Pero en nuestro caso, ¿cómo los ven funcionando a primera vista? Se supone que deben hacer los cambios para ver si funcionan a primera vista y luego confirmar los cambios. Esto sucede con el entorno de desarrollo que tiene configurado un entorno de desarrollo (bases de datos, etc.) que no es posible para los desarrolladores. Pero si tener un repository de clon en dev. El repository no se puede compartir.

¿O por cada pequeño cambio que tengan que clonar, presionen a su local y luego entren al entorno para ver sus cambios y cómo se comporta el sistema y luego ir a probar hacer un pull para las testings finales?

Mi pregunta es cómo funciona esto en la práctica con gitflow y las sucursales y desarrolladores y los repos en diferentes entornos (producción, testing, desarrollo). ¿Cuál es el flujo de trabajo (procedimiento de trabajo)?

Lo siento por mi larga pregunta.

Gracias.