¿Cómo generar el registro de git solo con la primera línea?


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

Además, traté de usar los marcadores de posición como se definen en la página de manual. Sin embargo, no pude encontrar un comando para acortar el mensaje de registro. Probé 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. He aquí un ejemplo:

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

Así que, con el ejemplo dado, solo quiero que la salida Added some functionality. esté precedida por el hash shortend.

Author: JJD, 2010-12-18

7 answers

¿has probado esto?

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

El problema es probablemente que le 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. Tengo 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 ven fue probablemente implementado a propósito.

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

 400
Author: Gauthier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-20 11:05:13

¿Hace git log --oneline lo que quiere?

 110
Author: 9000,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-18 17:43:53

Mejor y más fácil git log haciendo un alias. Pegue el código a continuación en la 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

Leer Más.
https://coderwall.com/p/euwpig/a-better-git-log
Avanzado Reading.
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/

 24
Author: atilkan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-04 21:21:51

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

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

Entonces puedes llamarlo usando git slog (incluso funciona con autocompletado si lo tienes habilitado).

 23
Author: That Brazilian Guy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-13 15:42:40

Sin mensajes de confirmación, solo el hash:

git log --pretty=oneline | awk '{print $1}'
 6
Author: otiai10,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-15 18:41:42

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

git log --pretty=format:%s
 1
Author: technophyle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-24 03:24:40

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

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

Después de eso git log imprimirá lo que normalmente se imprimiría por git log --oneline

 -7
Author: noisy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-19 07:55:37