Tengo un repositorio de prueba simple con solo varias confirmaciones y quiero ver el registro filtrado de fecha y hora:
$ git log --author = "automatix" --since = "2013-01-30" --pretty - prueba cometer ea0719bef142659fa561c9d040b2120012ed0184 Fecha: Jue 31 Ene 02:03:12 2013 +0100 cometer ab4a8387bc4d9bdb4f67212df77eb1fc3d8b6304 Fecha: Jue 31 Ene 01:59:11 2013 +0100 cometer a0b027beba2cd03571bb9475b9db9542f8efe990 Fecha: Jue 31 Ene 01:50:38 2013 +0100 cometer add77c8fe2ba9254c11b98e14facede3420dc51c Fecha: Jue 31 Ene 01:48:34 2013 +0100 cometer e6e323c05d37c74fcabeb9186b95c0d49b862e6f Fecha: Jue 31 Ene 01:46:27 2013 +0100 cometer 8c286391e54d3fc1e210950b1320fd6f013a8f84 Fecha: Jue 31 Ene 01:41:27 2013 +0100 cometer 9c880595e57f717383796fa2940f41f0f42f7e2a Fecha: Jue 31 Ene 01:38:17 2013 +0100 cometer a95527f36a533e1ecba1aadceea31a9dcbe1a8db Fecha: Jue 31 Ene 01:30:00 2013 +0100
La primera confirmación seleccionada es a95527f36a533e1ecba1aadceea31a9dcbe1a8db
de 2013-01-30 01:30:00
. Se seleccionan 8 confirmaciones:
$ git log --author = "automatix" --since = "2013-01-30" --format = oneline - test | baño 8 34 498
OKAY. Ahora selecciono desde 2013-01-31
:
$ git log --author = "automatix" --since = "2013-01-31" --format = oneline - test | baño 0 0 0
¿Qué? Ok, eso debería significar que la since
regla excluye las confirmaciones de la fecha de inicio. ¿Derecho?
Pero sigamos:
$ git log --author = "automatix" --since = "2013-01-31 01:30:00" --pretty - test cometer ea0719bef142659fa561c9d040b2120012ed0184 Fecha: Jue 31 Ene 02:03:12 2013 +0100 cometer ab4a8387bc4d9bdb4f67212df77eb1fc3d8b6304 Fecha: Jue 31 Ene 01:59:11 2013 +0100 cometer a0b027beba2cd03571bb9475b9db9542f8efe990 Fecha: Jue 31 Ene 01:50:38 2013 +0100 cometer add77c8fe2ba9254c11b98e14facede3420dc51c Fecha: Jue 31 Ene 01:48:34 2013 +0100 cometer e6e323c05d37c74fcabeb9186b95c0d49b862e6f Fecha: Jue 31 Ene 01:46:27 2013 +0100 cometer 8c286391e54d3fc1e210950b1320fd6f013a8f84 Fecha: Jue 31 Ene 01:41:27 2013 +0100 cometer 9c880595e57f717383796fa2940f41f0f42f7e2a Fecha: Jue 31 Ene 01:38:17 2013 +0100 cometer a95527f36a533e1ecba1aadceea31a9dcbe1a8db Fecha: Jue 31 Ene 01:30:00 2013 +0100
$ git log --author = "automatix" --since = "2013-01-31 01:30:00" --format = oneline - test | baño 8 34 498
Ahora, cuando también estoy escribiendo la hora de inicio, se incluyen las confirmaciones de la hora de inicio .
No entiendo la lógica. ¿Alguien puede explicar por qué funciona tan extraño?
Gracias
git log --author="automatix" --since="2013-01-31 01:30" --pretty -- test
should content 7 se confirma. Pero contiene 8.git log --author="automatix" --since="2013-01-31 01:30" --format=oneline -- test | wc
=> 8 34498Respuestas:
En caso de que ayude a alguien más que aterrice aquí como lo hice yo, después de investigar un poco, descubrí que usar el formato ISO8601 también funciona:
Esto le dará precisión al segundo. Nota: también puede utilizar:
etc.
Por supuesto, esto no "explica por qué funciona tan extraño". Sin embargo, ciertamente me resolvió el problema.
EDITAR:
Después de investigar un poco más, descubrí "por qué funciona de manera tan extraña":
resulta que cuando no especificas un formato de fecha, git log se establece de forma predeterminada en la zona horaria del autor o en las fechas de confirmación , es decir, para un comportamiento consistente, es útil para declarar explícitamente su formato de fecha con algo como:
Por último, cuando no especifica una hora, el valor predeterminado es su hora local cuando ejecutó el comando.
En pocas palabras, ser específico debería resolver el problema:
Además, puede establecer el formato de fecha predeterminado de forma permanente con el siguiente comando:
puede utilizar cualquiera de estos valores:
(relative|local|default|iso|rfc|short|raw)
fuente