pretty log how examples commits check git version-control formatting logging commit-message

how - ¿Cómo generar git log con la primera línea solamente?



history commit git (7)

Estoy tratando de personalizar el formato para git log . Quiero que todos los compromisos se muestren en una línea. Cada línea solo debe mostrar la primera línea del mensaje de confirmación.
Descubrí que git log --pretty=short debería hacer el truco pero en mi computadora muestra el registro completo como git log (además de la marca de tiempo).

Además, traté de usar los marcadores de posición como se define en la página del manual . Sin embargo, no pude encontrar un comando para acortar el mensaje de registro. Intenté esta línea git log --pretty=format:''%h : %s'' que muestra el hash en cortocircuito %h y el mensaje completo %s en una línea.

Estoy usando git version 1.7.3.1.msysgit.0 en Vista.

Tal vez tenga algo que ver con la forma en que escribo mis mensajes de confirmación. Aquí hay un ejemplo:

Added some functionality. + Added print function in Foo class. + Added conversion from foo to baz.

Entonces, con el ejemplo dado, solo quiero que se genere Added some functionality. precedido por el hash shortend.


¿ git log --oneline hace lo que quieres?


¿Has probado esto?

git log --pretty=oneline --abbrev-commit

El problema probablemente es que falta una línea vacía después de la primera línea. El comando anterior generalmente funciona para mí, pero acabo de probar en una confirmación sin una segunda línea vacía. Obtuve el mismo resultado que tú: el mensaje completo en una línea.

La segunda línea vacía es un estándar en los mensajes de confirmación de git. El comportamiento que ves fue probablemente implementado a propósito.

La primera línea de un mensaje de confirmación es una breve descripción. Si no puede hacerlo en una sola línea, puede usar varias, pero git considera que todo antes de la primera línea vacía es la "descripción breve". oneline imprime toda la breve descripción, así que todas sus 3 filas.


Esto imprimirá solo el mensaje (solo línea de asunto) sin hash:

git log --pretty=format:%s


Puede definir un alias global para invocar un registro corto de una manera más cómoda:

git config --global alias.slog "log --pretty=oneline --abbrev-commit"

Luego puedes llamarlo usando git slog (incluso funciona con autocompletar si lo tienes habilitado).


Si desea utilizar siempre el git log de tal manera podría agregar el alias de git

git config --global alias.log log --oneline

después de ese git log se imprimirá lo que normalmente se imprimiría con el git log --oneline


Sin cometer mensajes, solo el hash:

git log --pretty=oneline | awk ''{print $1}''