¿En qué casos git merge –no-ff no mantiene el historial de commit?

Tengo una twig de desarrollo llamada devel , una twig de function llamada feature_1 y una twig de testing llamada testing . Esto es lo que hice:

  • feature_1 ramificado desde devel
  • se realizaron confirmaciones aquí para implementar la function
  • feature_1 se fusionó para testing
  • algunos errores se descubrieron en feature_1 (con --no-ff )
  • se han realizado confirmaciones adicionales para feature_1
  • Mientras tanto, se ha fusionado una revisión para devel y la feature_1 no se ha vuelto a instalar.
  • feature_1 se ha fusionado nuevamente para testing , con --no-ff )
  • todas las testings en las testings de ramificación fueron exitosas, y la twig feature_1 se puede fusionar de nuevo en devel
  • feature_1 en devel con --no-ff , pero en lugar de la combinación copyndo todas las confirmaciones que se crearon en la twig feature_1 , solo creó una fusión de confirmación que decía que la twig feature_1 se ha fusionado.

¿Alguien podría explicar por qué el –no-ff no conserva el historial de compromiso? Me inclino a decir que es porque la twig feature_1 no se ha vuelto a establecer para el devel , pero no estoy seguro.

A diferencia de git rebase , que por defecto mantendrá el historial de confirmaciones, una git merge --no-ff genera por layout una confirmación.
Entonces lo que ves después de combinar feature_1 en devel con --no-ff es normal.

 --no-ff 

Crea un commit de fusión incluso cuando la fusión se resuelve como un avance rápido.