Como filtrar el historial de Git

El comando git log nos muestra todo el historial de cambios de un proyecto pero ¿sabías que puedes filtrar resultados dentro del historial?

Diseño web
2 minutos
Hace 7 años
Como filtrar el historial de Git

¡Accede a cientos de cursos
con solo un pago al año!

Blog Microbanner

Cuando trabajamos con git podemos revisar el historial de cambios de nuestro proyecto a través del comando log, si ejecutamos este comando veremos una salida similar a esta:

1$ git log 2 3commit 683f2e0d811004b513c3070d3451e5b10f29f650 4Author: Alexys Lozada <alexyslc@gmail.com> 5Date: Tue Jul 25 10:42:16 2017 -0500 6 7 Renombra la tabla password_resets 8 9commit a5a6e106980926b58f8d617675ba221c2c24b7f9 10Author: Daniel Romero <danielromeroauk@gmail.com> 11Date: Sun Jul 23 09:11:59 2017 -0500 12 13 Permite ver capítulos sólo a los usuarios que tienen una suscripción activa 14 15commit bf344b37df9c89d5db27bff665481374ee4d0689 16Author: Jonathan MirCha <jonmircha@gmail.com> 17Date: Sat Jul 22 00:41:03 2017 -0500 18 19 Agrega estilos y assets a Suscripción 20

Por defecto el comando log muestra todo el historial de cambios de nuestro repositorio en orden cronológico con la información básica del commit (id, autor, fecha y mensaje).

Sin embargo algunas veces necesitaremos filtrar el historial de cambios de acuerdo a nuestras necesidades, por lo que git nos provee algunas opciones útiles para realizar esta tarea. La opción -n nos permite obtener los últimos n commits, por ejemplo si queremos obtener los 2 últimos commits utilizaríamos:

1$ git log -2 2 3commit 683f2e0d811004b513c3070d3451e5b10f29f650 4Author: Alexys Lozada <alexyslc@gmail.com> 5Date: Tue Jul 25 10:42:16 2017 -0500 6 7 Renombra la tabla password_resets 8 9commit a5a6e106980926b58f8d617675ba221c2c24b7f9 10Author: Daniel Romero <danielromeroauk@gmail.com> 11Date: Sun Jul 23 09:11:59 2017 -0500 12 13 Permite ver capítulos sólo a los usuarios que tienen una suscripción activa 14

También podemos filtrar por autor, es decir obtener todos los commits que hayan sido realizados por una persona especifica, por ejemplo:

1$ git log --author "Alexys" 2 3commit 683f2e0d811004b513c3070d3451e5b10f29f650 4Author: Alexys Lozada <alexyslc@gmail.com> 5Date: Tue Jul 25 10:42:16 2017 -0500 6 7 Renombra la tabla password_resets 8 9commit f1337f315aff524e41daf77ec0cc15bd0781d19e 10Merge: a956820 bdc56e3 11Author: Alexys Lozada <alexyslc@gmail.com> 12Date: Wed Jul 19 17:16:00 2017 +0000 13 14 Merge branch 'database/audit' into 'master' 15 16 Agrega la auditoría a las tablas principales 17 18 See merge request !1 19

Para filtrar nuestros historial por un rango de tiempo especifico las opciones --since (desde) y --until(hasta) nos permitirán realizar esta tarea.

Estas opciones pueden recibir una variedad de formatos como las siguientes:

  • Una fecha concreta: yyyy-mm-dd o yyyy-mm-dd hh:mm:ss
  • Una fecha relativa: 2 year 3 days 4 minutes ago
  • Un periodo de tiempo: minutes, hours, days, yesterday, weeks, months``years.

Veamos algunos ejemplos de uso:

Obtener los commits desde Julio 23 a Julio 25 de 2017.

1git log --since="2017-07-23 00:00:00" --until="2017-07-25 23:59:59" 2

Obtener los commits desde el día de ayer.

1git log --since="yesterday" 2

Obtener los commits de los últimos 5 meses.

1git log --since="5.months" 2

Si quieres aprender Git, puedes hacerlo en nuestro curso Git Desde Cero.

Comentarios de los usuarios