Mostrando confirmaciones hechas directamente a una sucursal, ignorando las fusiones en Git

Al usar git, ¿hay alguna forma de mostrar las confirmaciones hechas a una sucursal, mientras se ignoran todas las confirmaciones que se generaron al fusionarse?

Estoy tratando de revisar los cambios de código realizados en una sucursal sin tener en count los que hicimos en otras sucursales que se fusionaron. Sé que es casi imposible mostrar una diferencia de esa manera, pero me gustaría poder averiguar qué compromisos necesito revisar.

Ambos padres tienen el mismo peso en muchos contexts en git. Si siempre ha sido coherente en la fusión de otros cambios, entonces puede encontrar que esto le proporciona lo que desea.

git log --no-merges --first-parent 

De lo contrario, es posible que pueda excluir confirmaciones de otras sucursales con nombre.

 git log --no-merges ^other-branch-1 ^other-branch-2 ^other-branch-3 

Si desea revisar los cambios que va a fusionar nuevamente en una twig principal, entonces lo más fácil es realizar la fusión en un clon local y luego simplemente mirar el diff con el primer padre antes de publicar la fusión.

Puedes usar git cherry para eso, encontrará commits que aún no se fusionaron con el upstream, o commits que están en una twig pero no en la otra. Entonces, se le asignan dos twigs llamadas "sucursal" y "maestra":

 git cherry -v your-branch master 

le presentará su list de confirmaciones en comparación con su ID de parche:

 + c3e441bf4759d4aa698b4a413f1f03368206e82f Updated Readme - 2a9b2f5ab1fdb9ee0a630e62ca7aebbebd77f9a7 Fixed formatting + e037c1d90b812af27dce6ed11d2db9454a6a74c2 Corrected spelling mistake 

Puede observar que los commits con el prefijo "-" son los que aparecen en ambas twigs, mientras que los que tienen el prefijo "+" solo están disponibles en su bifurcación.

Como alternativa puedes usar:

 git log --pretty=format:"%h %s" your-branch..master --no-merges 

que le mostrará la list de confirmaciones realizadas en "sucursal" que todavía no están presentes en "maestro"

Una manera muy hackish:

git log --graph --oneline --no-merges thebranch|grep '^\*'