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.
Me di cuenta de que git log --pretty=short
debe hacer el truco, pero en mi equipo que muestra el registro completo como git log
lo hace (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. Probé esta línea git log --pretty=format:'%h : %s'
que muestra el hash en corto %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 la salida sea Added some functionality.
antepuesta por el hash de final corto.
%s
es el tema, no el mensaje completo.short
formato no está solo en una línea (¡sorpresa!)oneline
. Sioneline
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. De hecho, esa debería ser una versión abreviada. ¿Es posible que haya estado haciendo confirmaciones con una sola línea larga para el mensaje y viéndolas de alguna manera con ajuste de palabras?oneline
y%s
no genera lo que esperamos, al menos en mi computadora. Actualicé mi publicación con un ejemplo de mi mensaje de confirmación. Quizás ayude.Respuestas:
¿Has probado esto?
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 un commit 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 ve probablemente se implementó 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 varias, pero git considera que todo antes de la primera línea vacía es la "descripción breve".
oneline
imprime la descripción corta completa, por lo que todas sus 3 filas.fuente
git log
a un script de filtrado, pero realmente recomendaría escribir una breve descripción con una línea vacía.git log --oneline
--oneline es una taquigrafía integrada para "--pretty = oneline --abbrev-commit" que se usan juntos.cut
. Eso estaría bienawk
... (Por cierto, matemática P: ¿cuál es la probabilidad de que el siguiente bit en una secuencia huffman codificada correctamente, en el nivel de almacenamiento, esté activado o desactivado? Sugerencia: es === 50%.)%
for'%s'
. C-;¿Hace
git log --oneline
lo que quieres?fuente
Mejor y más fácil git log haciendo un alias . Pegue el siguiente código en el terminal solo una vez para una sesión. Pegue el código en el perfil zshrc o bash para que sea persistente.
Salida
Salida de líneas cambiadas
Alternativamente (recomendado)
pegue este código en el archivo global .gitconfig
Otras lecturas.
https://coderwall.com/p/euwpig/a-better-git-log
Lectura avanzada.
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/
fuente
git log --color --graph --pretty=format:"%%Cred%%h%%Creset -%%C(yellow)%%d%%Creset %%s %%Cgreen(%%cr) %%C(bold blue)<%%an>%%Creset" --abbrev-commit %1
. También puede pasar -p a este archivo bat para obtener líneas cambiadasEsto imprimirá solo el mensaje (solo el asunto) sin hash :
fuente
%s
para el sujeto;%b
para el cuerpo;%B
para ambos ("cuerpo en bruto" en git-scm.com/docs/pretty-formats )Puede definir un alias global para poder invocar un registro corto de una manera más cómoda:
git config --global alias.slog "log --pretty=oneline --abbrev-commit"
Luego puede llamarlo usando
git slog
(incluso funciona con autocompletado si lo tiene habilitado).fuente
Sin mensajes de confirmación, solo el hash:
fuente
git log --pretty=format:"%H"
git rev-list HEAD
.si desea usar siempre
git log
de tal manera, puede agregar alias gitgit config --global alias.log log --oneline
después de eso
git log
imprimirá lo que normalmente sería impreso porgit log --oneline
fuente
"log --oneline"
).