¿Cómo debo usar Git para serveres de desarrollo y producción?

Me acaban de incorporar a un proyecto en el que los desarrolladores han estado trabajando directamente en el sitio de producción a través de ftp, y luego empujan los cambios al repository maestro en git después. Quiero traer un server de desarrollo, pero como soy novato en Git, no estoy al 100% de cómo se integra en el flujo de trabajo. Mi comprensión actual es que iría de la siguiente manera:

  1. Los desarrolladores codifican a través de ftp en el server de desarrollo
  2. El progreso luego se envía a una twig de desarrollo en el Git Repo
  3. Las versiones pueden fusionarse con la twig principal
  4. El sitio de producción se actualiza al extraer el código del repository principal.

¿Eso suena bien?

La convención es tener una twig de Desarrollo que represente un estado desplegable para el código junto con las twigs de características y arreglos que eventualmente se fusionarán en esa twig. Finalmente, de forma convencional, tienes twigs que representan a cada server.

Los desarrolladores nunca deben codificar directamente en el server que deben codificar para git y el process de llegar al server debe ser una implementación de git. Existen herramientas de CI para casi cualquier entorno que harán que ese process sea automático al monitorear los repositorys de git, así que no tengas miedo de usarlos.

En última instancia, GIT debería ser el foco de los desarrolladores y realmente ni siquiera deberían conocer las direcciones IP del server (no es necesario). Los administradores de sistemas deberían configurar herramientas de CI (Integración Continua) que ejecuten testings unitarias e implementen automáticamente si todo es kosher