Suponga que su historial de git commit se ve así:
A---B---C---D---E---F master
     \         /
      X---Y---Z topic
¿Es posible que git enumere solo las confirmaciones en el maestro, AF? En otras palabras, si la confirmación estaba en una rama fusionada, no quiero que se muestre.
                    
                        git
                                branch
                                git-branch
                                git-log
                                
                    
                    
                        wch
fuente
                
                fuente

DyZera parte de la rama fusionada?git logpermite mostrar solo las confirmaciones con--first-parent, para que obtenga las cosas correctasRespuestas:
git logtiene la opción--first-parent, por lo que no obtendrá eltopichistorial.Cuando se fusionan desde
master, lasmasterconfirmaciones son los primeros padres en fusionar. El registro de Git permite mostrar solo aquellas confirmaciones con --first-parent, para que obtenga las cosas correctas.fuente
--first-parenthace :) combinado con--no-mergesusted puede ocultar las confirmaciones de fusiónTLDR :
git log origin/master --no-mergesle dará un registro de maestro y excluirá cualquier compromiso combinado (en este caso x, y, z)Puntos originales
Hay otra forma general de hacer esto que no depende de
--first-parentcuál será útil en ciertas situaciones ... usando los filtros de exclusión de ramagit log origin/topic ^origin/masterEsto le dará un registroorigin/topiccon todasorigin/masterlas confirmaciones eliminadas.También puede agregar
--no-mergesque ocultará las confirmaciones de fusión que puede que desee o no.Otro consejo útil es utilizar en
shortloglugar de lologque le dará más de un resumen abreviado que puede ser útil para las notas de la versión o la comunicación de lo que hay en una rama.Actualización
Después de volver a leer esto, en realidad querrás casi lo contrario de lo que publiqué; sin embargo, terminaría excluyendo todo lo que está en master y foo (
git log origin/master ^origin/foo). Sin embargo, también puede obtener lo que solicita (ocultar todas las confirmaciones que forman parte de las fusiones) congit log origin/master --no-mergesfuente
La respuesta de Charles funciona para mí.
Pero si está utilizando una interfaz gráfica de usuario para sus actividades de Git como, Git Extension, SourceTree, Tortoise Git,
Luego, hay opciones directas para verificar el primer padre en sus herramientas. Pensé en agregar esta respuesta a la lista, ya que la mayoría de las personas encuentran fácil la interfaz gráfica. y Puede seleccionar directamente todas las confirmaciones de esa rama en particular de la herramienta, si es necesario.
He adjuntado el ejemplo de dos herramientas. Sería similar para otras herramientas también: [He borrado el nombre de usuario, el nombre del repositorio de git ya que este es un repositorio privado, pero aún puedes tener una idea de cómo usar el primer padre de las herramientas ]
fuente
¿No funciona esto?
fuente