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
D
yZ
era parte de la rama fusionada?git log
permite mostrar solo las confirmaciones con--first-parent
, para que obtenga las cosas correctasRespuestas:
git log
tiene la opción--first-parent
, por lo que no obtendrá eltopic
historial.Cuando se fusionan desde
master
, lasmaster
confirmaciones 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-parent
hace :) combinado con--no-merges
usted puede ocultar las confirmaciones de fusiónTLDR :
git log origin/master --no-merges
le 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-parent
cuál será útil en ciertas situaciones ... usando los filtros de exclusión de ramagit log origin/topic ^origin/master
Esto le dará un registroorigin/topic
con todasorigin/master
las confirmaciones eliminadas.También puede agregar
--no-merges
que ocultará las confirmaciones de fusión que puede que desee o no.Otro consejo útil es utilizar en
shortlog
lugar de lolog
que 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-merges
fuente
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