Git commit desapareció después de la fusión

Estoy trabajando en un proyecto con algunos queueboradores, cada uno con una copy remota de la twig principal, que puede estar actualizada o no con la twig principal de origen.

Supongamos que uno de los queueboradores tiene una copy desactualizada debido a una confirmación X , confirma algo de Y e intenta enviarlo a la twig de origen. Falla y el queueborador fusiona los cambios y empuja nuevamente, esta vez con éxito.

Ahora, al mirar el historial del repository, no se puede encontrar la confirmación X , excepto que los cambios se encuentran ahora en otra confirmación denominada Merge branch 'master' of https://....

¿Es este comportamiento normal de git? Esto hace que el seguimiento de los cambios sea difícil. ¿Hay algo que se pueda hacer para evitar este problema?

¡Gracias por adelantado!

Este es un comportamiento completamente normal para Git al usar git merge . La fusión Git reemplaza las confirmaciones en la twig fuente con una única confirmación de fusión en la twig de destino.

Una opción para preservar la historia es usar git rebase en git rebase lugar. En una rebase, su queueborador primero traería los cambios de la twig master remota, y luego volvería a comprometer su trabajo en la parte superior. Esto dejaría a su master local por delante del control remoto, y él simplemente puede impulsar sus cambios. Considere el siguiente diagtwig:

 remote: A -- B -- C -- X local: A -- B -- C -- Y 

Después de hacer git rebase origin/master el diagtwig se vería así:

 remote: A -- B -- C -- X local: A -- B -- C -- X -- Y' 

donde Y' es el compromiso Y original de su queueborador ligeramente modificado. Ahora su queueborador se encuentra en la envidiable position de poder enviar su trabajo directamente a la sucursal master remota. Después de hacer el git push origin master desde su twig master , el diagtwig se vería así:

 remote: A -- B -- C -- X -- Y' local: A -- B -- C -- X -- Y' 

Ahora la confirmación de su queueborador aparece intacta en la twig master remota.