¿Cómo se puede encontrar el compromiso de fusión anterior entre dos ramas?Cómo encontrar el compromiso de fusión anterior
Me gustaría ver los cambios en mi rama principal desde la última vez que he fusionado la rama de publicación en la rama principal. Para ver los cambios en la rama de versión desde la última rama, es tan fácil como git diff ...release
Pero obviamente git diff release...
no funciona porque también incluye todos los cambios antes de la última fusión. Por lo tanto creo que es necesario el ID de comprometerse de la última combinación de pasarlo a git diff
git log --reverse --ancestry-path `git merge-base HEAD release`.. \
--format=format:%H|head -n1
parece funcionar y se puede utilizar con git diff $(...)
, pero parece muy complicado. ¿Hay alguna solución más fácil?
Ejemplo
I
/\
A1 B1
\ |
| M
| |
A2 B2
Aquí I
es cometer el inicial. A[12]
son los commit commits y B[12]
son los commits principales. M
es la confirmación anterior. En el ejemplo, los cambios entre la última fusión y el máster son solo los cambios introducidos por B2. git merge-base A2 B2
devuelve A
1. Y git diff B2 A1
incluye los cambios de B1
. Por lo tanto, la pregunta es cómo encontrar M en el caso general más complejo para que uno pueda ejecutar git diff M B2
sin tener que encontrar manualmente M
.
Esta no es la forma más eficiente, pero puede consultar 'git log --graph --oneline' para encontrar la confirmación. – Shahbaz