Git: cherry pick inserta cambios de otros commits

He estado tratando de elegir una comisión específica de una brach a otra. Digamos que mi historia se ve así:

A - B - C - D (master) \ X - Y (feature) 

Ahora, digamos que quiero aplicar solo los cambios que confirman D en el maestro a la twig de características, justo después de Y. Cuando trato de hacer esto, hay conflictos de fusión y puedo ver rastros de confirmación C al fusionar, aunque solo quería para cherry pick commit D.

¿Qué me estoy perdiendo?

git cherry-pick master o git cherry-pick <id-of-D> hace una diferencia de C a D y luego intenta aplicar esa diferencia a su tree / compromiso actual (en este caso, el tree para Y ). Como dijiste, verás rastros de la confirmación C si D hace cambios a, o cerca de, cosas que también se cambiaron en C , porque la diferencia lleva el context. Es ese context el que permite a git encontrar qué cambiar en Y , en caso de que las líneas, o funciones, o files completos, se hayan movido (por ejemplo, en X y / o Y ).

Git no entiende la semántica, solo la syntax: solo elegirá cuidadosamente si la syntax coincide, y requerirá su ayuda (y no sabrá qué no mostrarle) si no es así.