¿Cómo veo todas las confirmaciones de un día específico?
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-11
y2013-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-12
solo
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-12
y2013-11-13
Como era de esperar (a partir de los resultados 2013-11-11
anteriores 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
, before
y until
pero 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?
¡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"
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 --author
para 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/--after
y --until/--before
también pueden tomar cosas como 3 days ago
, yesterday
etc.
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 log
y JSON
consumir/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.
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: