¿Hay alguna manera de hacer que git-reflog muestre una fecha junto a cada entrada?

305

El comando git-reflog no muestra de manera predeterminada una fecha junto a cada entrada, lo que me parece una extraña supervisión; Creo que esto sería muy útil.

¿Hay alguna opción de línea de comandos u otros ajustes que puedan emplearse para que se muestre cuando se agregó cada entrada de registro? La página de manual no está disponible ...

Andrew Ferrier
fuente

Respuestas:

453

A medida que escribe la página del manual, puede usar las opciones para git log, por ejemplo, git reflog --pretty=shorto cualquier otra que desee

tratar

git reflog --date=iso
Balog Pal
fuente
11
Esto reemplaza el número de la cabeza (o cualquiera que sea el término correcto) con la fecha. ¿Puedes tener ambos?
Marco Eckstein
77
@Marco parece que tendría que utilizar un formato personalizado: git reflog --format='%C(auto)%h %<|(17)%gd %C(blue)%ci%C(reset) %s'. He agregado un alias para esto: github.com/blueyed/dotfiles/commit/…
blueyed
1
@blueyed No es lo mismo: el --date=isocomando en el registro de reflog muestra cuándo se creó esa entrada de reflog, no la hora de la confirmación. Todavía aprecio tu alias, ya que lo he usado para hacer un reflog más bonito.
Johan Henkens
36

Puedes usar la --walk-reflogsvariante de git log:

git log -g

Esto es bastante detallado por defecto e imprime la fecha, entre otras cosas. Puede formatearlo con la --pretty=bandera estándar .

También puede usar el comando reflog directamente con la --pretty=bandera para formatear la salida.

git reflog --pretty='%cd %h %gd %gs'

En el formato anterior, %cdmuestra la fecha de confirmación a la izquierda de la salida normal de registro.

Klas Mellbourn
fuente
99
%cd, muestra la fecha de confirmación de los puntos de reflog, desafortunadamente, que no es lo que yo (o el OP) buscamos: queremos la fecha de la entrada de reflog.
Thanatos
10
git log --walk-reflogs --date=isome
alegró el
7

Tienes que usar un formato personalizado:

git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'

En el formato anterior, %hes el hash de confirmación, %cres la fecha de confirmación relativa, %gses el tema de registro y %ses el tema de confirmación. Mira los documentos de git-log para otros posibles marcadores de posición. Por ejemplo, usar en %cilugar de %crmostrará fechas de confirmación absolutas.

Puede guardar esto en su ~ / .gitconfig usando un prettyformato personalizado y consultarlo mediante un alias:

[alias]
    rl = reflog --pretty=reflog
[pretty]
    reflog = %C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)
azuladas
fuente
1
El problema con esto es que %gdno muestra la misma fecha que @{now}sí. Al buscar en el registro de registro, saber la hora exacta puede ser realmente importante ("Sé que estaba en el estado correcto a las 8:57", por ejemplo).
ErikE
2
@ErikE - Simplemente cambie el crpara ciobtener la marca de tiempo completa de cada acción:git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%ci%C(reset) %gs (%s)'
n1k31t4
6

Indique giten qué formato, reflogentradas contadas o reflogentradas cronometradas , es decir

$ git reflog @{now}

$ git reflog @{0}
gitter
fuente
Al programador en mí no le gustan las fechas de "lenguaje natural" dentro de {}, pero felizmente esta técnica también funciona --date=iso.
mwfearnley 01 de
5

Note git 2.10 (Q3 2016) mejora la documentación sobre la fecha con git reflog.

Ver commit 642833d , commit 1a2a1e8 (27 de julio de 2016) y commit d38c7b2 , commit 522259d , commit 83c9f95 , commit 2b68222 (22 de julio de 2016) por Jeff King ( peff) .
Ayudado por: Jeff King ( peff) .
(Fusionada por Junio ​​C Hamano - gitster- en commit 0d32799 , 08 ago 2016)

Las rev-listopciones se actualizan :

El designador de reflog en la salida puede mostrarse como ref@{Nth}(donde Nthestá el índice cronológico inverso en el reflog) o como ref@{timestamp}(con la marca de tiempo para esa entrada), dependiendo de algunas reglas.

Incluye : - una actualización sobre --date=raw:

Muestra la fecha como segundos desde la época (1970-01-01 00:00:00 UTC), seguido de un espacio, y luego la zona horaria como un desplazamiento desde UTC (una +o -con cuatro dígitos, los dos primeros son horas, y los segundos dos son minutos).
Es decir, como si la marca de tiempo estuviera formateada con strftime("%s %z")).
Tenga en cuenta que la -localopción no afecta el seconds-since-epoch valor (que siempre se mide en UTC), pero cambia el valor de la zona horaria que lo acompaña.

Y una nueva opción: --date=unix

muestra la fecha como una marca de tiempo de época Unix (segundos desde 1970).
Al igual que con --raw, esto siempre está en UTC y, por lo tanto, -localno tiene ningún efecto.

VonC
fuente