ver tipos tag remove practices modificados log etiquetas crear best archivos git git-log

git - tipos - ¿Cómo veo todas las confirmaciones para un día específico?



git ver archivos modificados (4)

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

Digamos que quiero obtener todos los commits para el martes, 12 de noviembre de 2013. Usando un repositorio existente como ejemplo, sé con certeza que tengo commits en ese día, así como que me comprometo el día anterior y el día posterior.

Con 2013-11-11 y 2013-11-12

Todo lo siguiente me compromete tanto para el 11 de noviembre como para el 12:

  • 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"

2013-11-12 con 2013-11-12

Todo lo siguiente no me compromete:

  • 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-12 y 2013-11-13

Tal como se esperaba (de los resultados de 2013-11-11 y 2013-11-12 anteriores), todo lo que sigue me da resultados del 12 al 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 intentado todas las combinaciones posibles since , after , before y until pero aún no puedo encontrar la respuesta, ni entiendo si esas opciones son inclusivas o exclusivas, ya que parecen ser inclusivas si las dos fechas son diferentes, pero exclusivos si están en el mismo día. ¿Me perdí algo / qué estoy haciendo mal ?!


Hice un alias 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


No pasó nada malo con la respuesta aceptada (que voté a favor), pero ... ¡estamos aquí por la ciencia!

El siguiente resultado se puede expandir / personalizar con pretty=format:<string> placeholders :

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

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

Uno podría simplemente analizar todo el git log en JSON y consumir / manipular sus datos al contenido del corazón de uno. ¡Comprueba https://github.com/dreamyguy/gitlogg y nunca mires atrás!

Descargo de responsabilidad: ese es uno de mis proyectos.


Normalmente reviso mi registro de git y veo lo que estaba trabajando en un día específico y actualizo mi parte de horas basado en eso, pero me duele escribir la fecha completa en formato ISO, así que lo hago así.

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

y añado --author para solo imprimir mis confirmaciones

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

Esto imprime confirmaciones que ocurrieron el pasado 9 de junio (por lo que para 2016 en este caso y no para 2015 o 2014 y así sucesivamente).

Los --since/--after y --until/--before también pueden tomar cosas como hace 3 days ago , yesterday , etc.


Gracias John Bartholomew!

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