¿Cómo veo todas las confirmaciones de un día específico?

Resuelto 3cheesewheel asked hace 11 años • 5 respuestas

Ya revisé los documentos relevantes de git-scm.com y gitref.org , pero parece que no puedo resolver esto.

Digamos que quiero obtener todas las confirmaciones del martes 12 de noviembre de 2013. Usando un repositorio existente como ejemplo, sé con certeza que tengo confirmaciones ese día, así como las confirmaciones del día anterior y del día siguiente.

Con 2013-11-11y2013-11-12

Todo lo siguiente me da compromisos para el 11 y 12 de noviembre:

  • git log --after="2013-11-11" --until="2013-11-12"
  • git log --since="2013-11-11" --until="2013-11-12"
  • git log --after="2013-11-11" --before="2013-11-12"
  • git log --since="2013-11-11" --before="2013-11-12"

Con 2013-11-12solo

Todo lo siguiente no me da compromisos:

  • git log --since="2013-11-12" --until="2013-11-12"
  • git log --since="2013-11-12" --before="2013-11-12"
  • git log --after="2013-11-12" --until="2013-11-12"
  • git log --after="2013-11-12" --before="2013-11-12"

Con 2013-11-12y2013-11-13

Como era de esperar (a partir de los resultados 2013-11-11anteriores 2013-11-12), todo lo siguiente me da resultados tanto del 12 como del 13 de noviembre:

  • git log --since="2013-11-12" --before="2013-11-13"
  • git log --after="2013-11-12" --before="2013-11-13"
  • git log --since="2013-11-12" --until="2013-11-13"
  • git log --after="2013-11-12" --before="2013-11-13"

...y así sucesivamente y así sucesivamente. Siento que he probado todas las combinaciones posibles de since, after, beforey untilpero todavía no encuentro la respuesta, ni entiendo si esas opciones son inclusivas o exclusivas, ya que parecen ser inclusivas si las dos fechas son diferentes, pero exclusivo si son el mismo día. ¿Me perdí algo/qué estoy haciendo mal?

3cheesewheel avatar Nov 15 '13 02:11 3cheesewheel
Aceptado

¡Gracias Juan Bartolomé!

La respuesta es especificar la hora, por ejemplo.git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"

3cheesewheel avatar Nov 14 '2013 20:11 3cheesewheel

Por lo general, reviso mi registro de git y veo en qué estaba trabajando en un día específico y actualizo mi hoja de horas en función de eso, pero es un dolor de cabeza escribir la fecha completa en formato ISO, así que lo hago así.

git log --after=jun9 --before=jun10

y agrego --authorpara imprimir solo mis confirmaciones

git log --since=jun9 --until=jun10 --author=Robert 

Esto imprime confirmaciones que sucedieron el último 9 de junio (es decir, para 2016 en este caso y no para 2015 o 2014, etc.).

Los parámetros --since/--aftery --until/--beforetambién pueden tomar cosas como 3 days ago, yesterdayetc.

Kohányi Róbert avatar Jun 14 '2016 07:06 Kohányi Róbert

No hay nada de malo en la respuesta aceptada (que voté a favor), pero... ¡estamos aquí por la ciencia!

El resultado siguiente se puede ampliar/personalizar con pretty=format:<string> marcadores de posición :

git log --pretty='format:%H %an %ae %ai' | grep 2013-11-12

No es 100% inmune a errores, ya que un usuario podría haber ingresado la misma cadena. Pero es aceptable dependiendo de qué marcadores de posición se utilicen. El fragmento anterior no fallaría, por ejemplo.

También se podría simplemente analizar el conjunto git logy JSONconsumir/manipular sus datos al contenido de su corazón. ¡Consulta https://github.com/dreamyguy/gitlogg y nunca mires atrás!

Descargo de responsabilidad: ese es uno de mis proyectos.

Wallace Sidhrée avatar May 21 '2016 23:05 Wallace Sidhrée

Hice un alias de git para ese propósito específico:

commitsAtDate = "!f() { git log --pretty='format:%C(yellow)%h %G? %ad%Cred%d %Creset%s%C(cyan) [%cn]' --decorate --after=\"$1 0:00\" --before=\"$1 23:59\" --author \"`git config user.name`\"; }; f"

Uso:

git commitsAtDate 2017-08-18

Da como resultado una salida muy escaneable:

captura de pantalla de cuatro confirmaciones en una fecha específica por parte del autor

Michael Große avatar Aug 18 '2017 12:08 Michael Große