git crea la fusión de compromiso en lugar de usar el avance rápido. ¿Por qué?

Estoy trabajando en un proyecto de WebApp que utiliza un repository de git simple que se organiza en tres twigs:

  1. dev-master
  2. beta-master
  3. public-master

Todo el desarrollo se realiza utilizando un clon de la twig dev-master : no se clonó el repository completo, sino solo la twig específica:

 git clone /path/to/bare/repo.git --branch dev-master dev 

Una vez que una nueva característica está list, los cambios en dev-master llevan al repository simple:

 // Within dev repository git push 

Los cambios se publican primero en una versión beta de la aplicación web. Este es solo otro clon del repository desnudo. Esta vez, por supuesto, un clon de la twig beta-master .

¿Cuál es la estrategia correcta / correcta para copyr los cambios de dev-master a beta-master ?

 cd path/to/beta/ git fetch git merge origin/dev-master 

Una vez que se hayan probado las características, haría lo mismo para pasar los cambios de beta a público,

Esto funciona, pero tiene un inconveniente: cada vez que se hace esto, git crea un compromiso de fusión en beta-master lugar de simplemente usar el avance rápido. Esto no hace que la historia sea más fácil de leer …

Entonces, ¿cuál sería el flujo de trabajo correcto en una situación como esta?