Cómo configurar 'git log' para mostrar 'commit date'

127

¿Cómo puedo configurar git logpara mostrar en commit datelugar de author date?

Miguel
fuente
25
@Colleen Cada confirmación tiene dos fechas asociadas: AuthorDate y CommitDate ( git show --pretty=fuller HEADpara ver un ejemplo). Para el desarrollo local, estos son generalmente los mismos, pero para los parches agregados por correo electrónico u otros mecanismos, pueden diferir, donde AuthorDate es la fecha en que se generó el parche y el CommitDate cuando se aplicó realmente al repositorio.
twalberg

Respuestas:

145

Hay varias opciones para imprimir bonita la fecha. Probablemente lo más fácil es usar uno de los --prettyformatos precocidos , como git log --pretty=fuller: esto mostrará ambas fechas. Si desea ver solo una fecha, pero que sea la fecha de confirmación, puede usarla git log --format=<some stuff>. Todos los códigos permitidos para definir el formato están documentados en git help log. El comprometen la fecha es uno de %cd, %cD, %cr, %cto %ci, dependiendo de qué formato que prefiera en.

Si es algo que desea hacer a menudo, póngalo en un alias o escriba un guión auxiliar para ahorrar al escribir.

Twalberg
fuente
53

Puede usar --pretty=formaty usar %crpara la fecha de confirmación relativa.

Por ejemplo:

$ git log --graph --pretty=format:'%C(auto)%h%d (%cr) %cn <%ce> %s'

Puede definir un alias en git para que sea más fácil de usar. Tengo lo siguiente en mi .gitconfig:

[alias]
# see `git help log` for detailed help.
#   %h: abbreviated commit hash
#   %d: ref names, like the --decorate option of git-log(1)
#   %cn: commiter name
#   %ce: committer email
#   %cr: committer date, relative
#   %ci: committer date, ISO 8601-like format
#   %an: author name
#   %ae: author email
#   %ar: author date, relative
#   %ai: author date, ISO 8601-like format
#   %s: subject
# my awesome git log replacement
lol  = log --graph --pretty=format:\"%C(auto)%h%d%Creset %C(cyan)(%cr)%Creset %C(green)%cn <%ce>%Creset %s\"
# same as above, but ISO date
lold = log --graph --pretty=format:\"%C(auto)%h%d%Creset %C(cyan)(%ci)%Creset %C(green)%cn <%ce>%Creset %s\"
# using build-in standards
lol2 = log --oneline --graph --decorate
# shows branches and their last commits
lol3 = log --all --graph --decorate --oneline --simplify-by-decoration

En Linux o sistemas similares, puede usar comillas simples en 'lugar de comillas dobles ":

[alias]
lol = log --graph --pretty=format:'%C(auto)%h%d%Creset %C(cyan)(%cr)%Creset %C(green)%cn <%ce>%Creset %s'

Con esto, simplemente ejecute git lol, o las otras variantes para ver la salida bonita.

Aquí está la salida de git lol --simplify-by-decoration:

git lol salida

  • Se ve bien. :)
  • loles más fácil de escribir que logy suena mejor también.
    • También le da acceso a la regular git logsi alguna vez la necesita.
  • Sus ojos pueden escanear contenidos rápidamente por los diferentes colores.
  • Los nombres y correos electrónicos son muy útiles para grandes proyectos / organizaciones con muchos contribuyentes.
  • Usando el color predeterminado para hash / ref, ya que es bastante bueno.

Aquí está la salida de git loldcon fechas en formato ISO. Es útil para ver la fecha / hora exacta en que se realiza una confirmación, con la ventaja de poder ver fácilmente la zona horaria del contribuyente.

ingrese la descripción de la imagen aquí

Editar 2020-06 : capturas de pantalla añadidas. Actualizado para usar %C(auto)(coloración automática / predeterminada) para %h(commit hash) y %d(nombres de referencia). Se agregó %cn(nombre del responsable) además del correo electrónico.

raychi
fuente
1
Me sale un error de análisis: git log --graph --pretty=format:\"%C(yellow)%h%Creset%C(cyan)%C(bold)%d%Creset %C(cyan)(%cr)%Creset %C(green)%ce%Creset %s\" bash: error de sintaxis cerca del token inesperado `('
frakman1
2
@ frakman1: debe salir de la "s para que la línea anterior se ejecute en la terminal"
comienza el
2
Línea corregida: git log --graph --pretty = formato: "% C (amarillo)% h% Creset% C (cian)% C (negrita)% d% Creset% C (cian) (% cr)% Creset% C (verde)% ce% Creset% s "
RedSands
1

Prefiero este formato, no incluye el nombre del autor e incluye la fecha real de confirmación.

git log --graph --pretty=format:"%C(yellow)%h%x09%Creset%C(cyan)%C(bold)%ad%Creset  %C(green)%Creset %s" --date=short
Patrick Steil
fuente