Git: Mostrar la fecha de una confirmación

En esta breve guía, veremos cómo usar Git para obtener la fecha de una confirmación mediante los comandos show y log, así como también cómo formatear la salida.

Introducción

Como hemos cubierto en muchos de nuestros artículos anteriores, Git es una herramienta muy útil para los desarrolladores, aunque tiende a ser un poco confuso para los recién llegados.

Y mientras tanto, muchos conocen los conceptos básicos de Git y saben cómo realizar operaciones comunes, como fusionando confirmaciones, [derivación](/git-crea-una-nueva -rama/), o repositorios de clonación - hay un subconjunto de cola larga de cosas que probablemente necesitarás hacer con el tiempo que simplemente no sabrás de la parte superior de tu cabeza.

Por ejemplo, todas las confirmaciones contienen cierta cantidad de metadatos. ¿Cómo encontramos eso exactamente?

En este breve artículo, veremos cómo extraer la fecha de una confirmación de Git específica.

Obtenga la fecha de una confirmación usando Git

Para muchos casos de uso, puede encontrar fácilmente información como esta en el repositorio del proveedor de alojamiento del repositorio (como GitHub), pero eso no siempre es viable.

En ese caso, puede usar la línea de comando. Hay varias formas diferentes de lograr esto, pero por ahora nos centraremos en el siguiente comando:

1
$ git show -s --format=%ci <commit>

Al usar esto en el repositorio real, obtendrá algo como:

1
2
$ git show -s --format=%ci d4d20c2
2021-09-28 11:13:46 -0500

También puede omitir el hash de confirmación para obtener la fecha de la última confirmación:

1
2
$ git show -s --format=%ci
2021-09-29 10:04:27 -0500

Para lo que parece una tarea simple, están sucediendo muchas cosas aquí. Vamos a desglosarlo para entender mejor lo que está pasando.

Primero, usamos el comando mostrar. Según la página man, este comando se usa para "Mostrar varios tipos de objetos". Eso suena un poco vago, pero eso es exactamente lo que hace.

{.icon aria-hidden=“true”}

Puede usar el comando show para extraer varios metadatos sobre blobs, árboles, etiquetas y confirmaciones.

Entonces, cuando desee obtener información específica sobre una confirmación, por ejemplo, este es el comando que probablemente querrá usar.

La siguiente opción en nuestro comando es -s. Esta opción simplemente suprime la salida diff. Sin esta opción, el comando show muestra el parche de confirmación de forma predeterminada, lo que satura la salida:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
$ git show --format=%ci d4d20c2
2021-09-28 11:13:46 -0500


diff --git a/routes/api.js b/routes/api.js
index d09cae0..bf6004f 100644
--- a/routes/api.js
+++ b/routes/api.js
@@ -111,7 +111,7 @@ exports.edit = async (req, res) => {
         }
 
         if (!user.hasPermission('content_edit')) {
-            response.failed('You don\'t have permission to edit this user.');
+            response.failed('You don\'t have permission to edit this content.');
             return res.json(response.done());
         }

Obtenemos mucha más información de la salida de la que nos importa, por lo que -s es una opción útil para eliminar esto.

La siguiente opción es --format=%ci. Esto le dice al comando show exactamente qué información estamos solicitando sobre el objeto. En este caso, %ci especifica la fecha de confirmación, específicamente en formato similar a ISO 8601. Otros formatos similares son la fecha en estilo RFC2822 (%cD) o marca de tiempo Unix (%ct).

La opción --format es importante ya que es donde puede especificar una amplia gama de metadatos para mostrar. Además de la fecha de confirmación, aquí hay algunos otros ejemplos de metadatos que puede mostrar con este comando:

  • Confirmar hash (%H)
  • Hash de árbol (%T)
  • Nombre del autor (%an)
  • Correo electrónico del autor (%ae)
  • Asunto (%s)
  • Notas de confirmación (%N)

Y, por supuesto, el último argumento de nuestro comando es <commit>, que se explica por sí mismo. Este es un argumento opcional en el que puede especificar la confirmación que le interesa. Dado que el comando mostrar funciona en muchos tipos diferentes de objetos, este argumento se puede usar para especificar cualquiera de los objetos admitidos, como etiquetas o árboles.

Por ejemplo, si quisiera especificar una etiqueta, simplemente usaría el nombre de la etiqueta en lugar del hash de confirmación:

1
2
3
4
5
6
7
8
$ git show -s --format=%ci 
2021-09-28 11:13:46 -0500

$ git show -s --format=%ci v0.1.2
tag v0.1.2
Tagger: Scott Robinson <[correo electrónico protegido]>

Fix failure message when user doesn't have content_edit permission

Extracción de fecha de confirmación con registro y formato de fechas {#extracción de fecha de confirmación con registro y fechas de formato}

Es posible que en realidad no te interesen todas las diferentes formas en que puedes extraer información como esta de Git, pero es útil ver otros enfoques, ya que te dará una buena idea de todo lo que es posible con Git.

Formateo de fechas

Si bien hay varios formatos de fecha compatibles directamente con la opción --format, no es compatible con todos los estilos de fechas posibles que desee obtener como salida. Una opción más versátil es usar --format=%cd, que devuelve la fecha del confirmador y al mismo tiempo respeta el formato de fecha proporcionado en la opción --date=. A esta opción se le pueden dar valores como relativo, local, predeterminado, iso y otros.

La opción --date también se puede usar para especificar formatos de fecha más detallados usando tokens de formato:

1
2
$ git show -s --format=%cd --date=format:'%Y-%m-%d %H:%M:%S' d4d20c2
2021-09-29 10:04:27

Usando los tokens del formateador, puede formatear la fecha en cualquier forma y forma que desee.

Usando el comando log

Junto con el comando show, también podemos usar el comando log para obtener la fecha de una confirmación. Este es un método redundante, en este caso, pero tiene sus propios usos en otros aspectos.

De acuerdo con las páginas man, log "Muestra los registros de confirmación", lo que puede parecer obvio. Si lees las páginas man, notarás que hay muchas características superpuestas con show.

La principal diferencia es que show se usa principalmente para inspeccionar una sola confirmación, mientras que log se usa para mostrar un rango de confirmaciones. log también tiene muchas más funciones en términos de devolución y formateo de confirmaciones, como buscar/saltar/limitar los mensajes de confirmación devueltos.

Para obtener la fecha de confirmación, podemos usar el comando log, con los mismos argumentos que antes, pero con la adición de -1:

1
2
$ git log -1 --format=%ci d4d20c2
2021-09-29 10:04:27 -0500

La única diferencia es el parámetro -1, que le dice a este comando que devuelva información de fecha para solo 1 confirmación. Usar -2 aquí devolvería 2 confirmaciones, y así sucesivamente. El resto de los parámetros son idénticos a show.

Conclusión

En este artículo, analizamos en detalle cómo podemos usar el comando show para recuperar metadatos sobre una confirmación, específicamente obteniendo su fecha de confirmación. También vimos cómo se puede usar para recuperar una serie de otras piezas de información, así como otros comandos disponibles para usos similares.

Licensed under CC BY-NC-SA 4.0