Estoy tratando de mostrar la última confirmación dentro de Git, pero necesito la fecha en un formato especial.
Sé que el formato bonito de registro %ad
respeta el --date
formato, pero el único --date
formato que puedo encontrar es "corto". Quiero conocer a los demás y si puedo crear uno personalizado como:
git -n 1 --date=**YYMMDDHHmm** --pretty=format:"Last committed item in this release was by %%an, %%aD, message: %%s(%%h)[%%d]"
git
command-line
ar3
fuente
fuente
--date=iso-strict
: vea mi respuesta a continuación--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
, también tendrá:--date=(relative-local|default-local|iso-local|iso-strict-local|rfc-local|short-local|raw-local)
Respuestas:
Los otros son (de
git help log
):No conozco ninguna forma integrada de crear un formato personalizado, pero puedes hacer algo de magia de shell.
El primer paso aquí te da una marca de tiempo de milisegundos. Puede cambiar la segunda línea para formatear esa marca de tiempo como lo desee. Este ejemplo le da algo similar a
--date=local
, con un día acolchado.Y si desea un efecto permanente sin escribir esto cada vez, intente
O, para tener efecto en todo su uso de git con esta cuenta
fuente
git config log.date iso
o, para tener efecto en todo su uso de git con esta cuentagit config --global log.date iso
--format:<args>
pasará<args>
al medio tiempo.Además de
--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
, como han mencionado otros, también puede usar un formato de fecha de registro personalizado conEsto produce algo así como
2016-01-13 11:32:13
.NOTA: Si echa un vistazo a la confirmación vinculada a continuación, creo que necesitará al menos Git v2.6.0-rc0para que esto funcione.
En un comando completo sería algo como:
No he podido encontrar esto en la documentación en ningún lugar (si alguien sabe dónde encontrarlo, por favor comente), así que originalmente encontré los marcadores de posición por prueba y error.
En mi búsqueda de documentación sobre esto, encontré un commit a Git que indica que el formato se alimenta directamente
strftime
. Buscandostrftime
( aquí o aquí ) los marcadores de posición que encontré coinciden con los marcadores de posición enumerados.Los marcadores de posición incluyen:
En un comando completo sería algo así como
fuente
git config --global alias.lg "log --graph --decorate -30 --all --date-order --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(cyan)%h%Creset %C(black bold)%ad%Creset%C(auto)%d %s'"
git lg
y todavía recibo el siguiente error.fatal: unknown date format format:%Y-%m-%d %H:%M:%S
. Estoy ejecutando git en windows. Aquí está mi versión git.git version 1.9.5.msysgit.1
. Entonces, ¿tengo que actualizar a la versión más nueva?%X
~~, acabo de probarlo en mi máquina y definitivamente obtengo horas en mi zona horaria. ~~ Hmm, ahora no estoy seguro. Cloné un repositorio de alguien que no estaba en mi zona horaria e intenté nuevamente. Creo que estoy formateando la hora usando la configuración regional actual pero con la zona horaria cortada.Después de mucho tiempo buscando una manera de obtener
git log
la fecha en el formatoYYYY-MM-DD
de una manera que funcionaraless
, se me ocurrió el siguiente formato:junto con el interruptor
--date=iso
.Esto imprimirá la fecha en formato ISO (uno largo) y luego imprimirá 14 veces el carácter de retroceso (0x08), que, en mi terminal, elimina efectivamente todo después de la parte AAAA-MM-DD. Por ejemplo:
Esto da algo como:
Lo que hice fue crear un alias
l
con algunos ajustes en el formato anterior. Muestra el gráfico de compromiso a la izquierda, luego el hash del compromiso, seguido de la fecha, los nombres cortos, los nombres de referencia y el asunto. El alias es el siguiente (en ~ / .gitconfig):fuente
--date=short shows only date but not time, in YYYY-MM-DD format.
| sort | uniq
no funcionan.%C(bold cyan)%ai%x08%x08%x08%x08%x08%x08%x08%x08%x08%C(reset) %C(bold green)(%ar%x08%x08%x08%x08)%C(reset)
para obtener el formato2015-01-19 11:27 (11 days)
. +1Puede usar la opción de truncamiento de campo para evitar tantos
%x08
caracteres. Por ejemplo:es equivalente a:
Y bastante más fácil a la vista.
Mejor aún, para este ejemplo en particular, el uso
%cd
respetará el--date=<format>
, por lo que si lo deseaYYYY-MM-DD
, puede hacer esto y evitar%<
y por%x08
completo:Acabo de notar que esto era un poco circular con respecto a la publicación original, pero lo dejaré en caso de que otros lleguen aquí con los mismos parámetros de búsqueda que hice.
fuente
Necesitaba lo mismo y encontré que lo siguiente funcionaba para mí:
El
--date=format
formatea la salida fecha en que el--pretty
dice lo que desea imprimir.fuente
git log --pretty=format:"%h%x09%cd%x09%s" --date=format:'%Y-%m-%d %H:%M:%S %p'
Tenga en cuenta el
date=iso
formato " ": no es exactamente ISO 8601 .Ver commit " 466fb67 " de Beat Bolli (
bbolli
) , para Git 2.2.0 (noviembre de 2014)bonita: proporcione un estricto formato de fecha ISO 8601
Ver este hilo para la discusión.
fuente
Tenga en cuenta que esto se convertirá a su zona horaria local, en caso de que sea importante para su caso de uso.
fuente
Git 2.7 (Q4 2015) se presentará
-local
como una instrucción.Significa que, además de:
también tendrás:
El
-local
sufijo no se puede usar conraw
orelative
. Referencia .Ahora puede solicitar cualquier formato de fecha utilizando la zona horaria local . Ver
johnkeeping
) .Ver commit add00ba , commit 547ed71 (03 Sep 2015) por Jeff King (
peff
) .(Fusionada por Junio C Hamano -
gitster
- en commit 7b09c45 , 05 oct 2015)En particular, el último de arriba (commit add00ba) menciona:
fuente
format-local
obras también! Por eso es muy perfecto que fusionen el poder entre el formato favorito y el local.La opción de formato
%ai
era lo que quería:fuente
Con Git 2.21 (Q1 2019), se ha introducido un nuevo formato de fecha "
--date=human
" que transforma su salida dependiendo de qué tan lejos esté la hora de la hora actual ."
--date=auto
" se puede usar para usar este nuevo formato cuando la salida va al localizador o al terminal y, de lo contrario, al formato predeterminado.Ver commit 110a6a1 , commit b841d4f (29 de enero de 2019) y commit 038a878 , commit 2fd7c22 (21 de enero de 2019) por Stephen P. Smith (``) .
Ver commit acdd377 (18 Jan 2019) por Linus Torvalds (
torvalds
) .(Fusionada por Junio C Hamano -
gitster
- en commit ecbe1be , 07 feb 2019)Git 2.24 (Q4 2019) simplificó el código.
Ver commit 47b27c9 , commit 29f4332 (12 de septiembre de 2019) por Stephen P. Smith (``) .
(Fusionada por Junio C Hamano -
gitster
- en commit 36d2fca , 07 oct 2019)fuente
fuente
Use Bash y el comando de fecha para convertir de un formato similar a ISO al que desee. Quería un formato de fecha en modo org (y un elemento de lista), así que hice esto:
Y el resultado es, por ejemplo:
fuente