2010-12-18 7 views
216

Estoy tratando de personalizar el formato para git log. Quiero que todos los commits se muestren en una línea. Cada línea solo debe mostrar la primera línea del mensaje de confirmación.
I found out que git log --pretty=short debe hacer el truco pero en mi computadora muestra el registro completo como git log (además de la marca de tiempo).¿Cómo se puede generar el registro de git solo con la primera línea?

Además, traté de usar el placeholders as defined in the man page. 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 tiene algo que ver con la forma en que escribo mis mensajes de confirmación. Aquí está un ejemplo:

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

lo tanto, con el ejemplo dado yo sólo quiero ser la salida Added some functionality. antepuesto por el hash shortend.

+0

'% s' es el sujeto, no el mensaje completo. –

+0

Es muy difícil decir lo que realmente quieres. El formato 'short' * no es * todo en una línea, sin embargo (¡sorpresa!)' Oneline' es. Si 'oneline' y'% h:% s' no son lo que quieres, ¿qué les pasa? En particular, '% s' es el asunto, la primera línea del mensaje de confirmación. Eso debería ser una versión abreviada. ¿Es posible que haya estado haciendo commits con una sola línea larga para el mensaje, y viéndolos de alguna manera con el ajuste de palabras? – Cascabel

+0

Usted entiende totalmente. El problema es que 'oneline' y'% s' no dan como resultado lo que esperamos, al menos en mi computadora. Actualicé mi publicación con un ejemplo de mi mensaje de confirmación. Tal vez ayuda. – JJD

Respuesta

353

¿Has probado esto?

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

El problema es probable que usted 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ú: todo el mensaje 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 probablemente fue implementado a propósito.

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

+0

Gracias! Has resuelto el misterio: no tengo una línea vacía después de la primera línea en mi mensaje de confirmación para separar el tema del resto. Sin embargo, sería bueno si fuera libre de ponerlo o dejarlo. – JJD

+1

No hay problema. De hecho, eres libre de tener la línea vacía o no. Solo que su mensaje completo se convierte en el mensaje corto si lo deja afuera. Me gusta esta breve descripción/descripción detallada, y supongo que estar limitado a una línea para la breve descripción era un problema, de ahí el requisito de línea vacía. Siempre se puede canalizar la salida de 'git log' a un script de filtrado, pero realmente recomendaría escribir una breve descripción con línea vacía. – Gauthier

+1

Esto es lo que uso ahora: https://gist.github.com/763735 – JJD

97

¿git log --oneline hace lo que quiere?

+0

No quiero que todo el mensaje de confirmación se fusione en una línea. Quiero ver la primera línea de cada mensaje de confirmación solamente. – JJD

-7

si desea utilizar siempre git log de tal manera que podría añadir alias git por

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

después de eso git log imprimirá lo que normalmente se imprime por git log --oneline

+9

Esto no funciona, porque (los alias de A.it no pueden anular los nombres de los comandos incorporados) y (B. Es necesario que haya comillas alrededor de '" log --oneline "'). –

21

Se puede definir un alias global, de modo que puede invocar un breve registro de una manera más cómoda:

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

Entonces se le puede llamar usando git slog (incluso funciona con terminación automática si lo tienes activado)

18

Mejor y más fácil git log al hacer una alias. Pegue el código de abajo al terminal solo una vez.

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" 

salida

git lg 

salida líneas cambiadas

git lg -p 

lectura adicional.
https://coderwall.com/p/euwpig/a-better-git-log
Lectura avanzada.
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/

+0

El ejemplo es una bonita demostración de formato bonito, pero "Pegar el código de abajo a la terminal una sola vez" parece incorrecto porque no crea un alias para "git lg" – Drone2537

+0

@ Drone2537 Gracias, lo corrigí. – atilkan

5

Sin comprometerse mensajes, sólo el picadillo:

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

Si solo quiere el hash ... 'git log --pretty = format:"% H "' –

Cuestiones relacionadas