sobrescritos - git ver archivos modificados
¿Cómo hacer que git muestre confirmaciones en un intervalo de fechas especificado para la fecha de autor? (3)
Al parecer this :
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
Filtros de confirmaciones en función de la fecha de envío . ¿Cómo puedo hacer que muestre confirmaciones para un intervalo de fechas de autor específico?
No puedes, al menos, no solo en Git. (Recordatorio para otras personas que visitan esta pregunta: no se trata de ver la fecha del autor, se trata de seleccionar las confirmaciones por la fecha del autor, a la --since
- --since
- y --until
- hasta que --before
. Estos selectores usan la fecha del --before
, no la fecha del autor. Considere como un ejemplo extremo un compromiso realizado "ahora", de modo que su fecha de envío sea en la década de 2000, pero con fecha retroactiva en el campo de la fecha del autor hasta algún día del año 1999. Si su rango de selección es "cualquier cerca del cambio de siglo "anulará la selección de este compromiso, ya que su fecha de envío es" ahora ", más de una década después de 1999.)
Considero que esto es un pequeño error en Git: deberías poder solicitar que use el campo de la fecha del autor en cualquier lugar, puedes solicitar que use el campo de la fecha del remitente. Esto es fácil con el formato de registro , ya que tenemos %ad
y %cd
y similares, pero es imposible con la selección de confirmación . Lo más cercano que tenemos es que git rev-list
puede ordenar por fecha de autor (dentro de la clasificación general de topo).
Un cambio global en git rev-list
, como --use-author-date
, funcionaría como un parche simple, y no sería muy difícil agregarlo a Git, pero creo que sería mejor tener --min-author-age
y --max-author-age
o similar, y una --max-author-age
"ordenar por fecha de autor" (independientemente de la --topo-order
general --topo-order
, de modo que la configuración de ambas banderas tenga el mismo efecto que --author-date-order
).
Como solución alternativa, puede enumerar todas las confirmaciones potencialmente interesantes (con git rev-list
o su equivalente, como git log
: use cualquier especificador que haga las confirmaciones potencialmente interesantes, excepto los filtros de fecha: en este caso, eso es solo --all
) y extraer todos sus campos de fecha de autor (con git log --format=%at
o lo que sea), luego haga su propia eliminación de la lista de ID de confirmación, luego vuelva a enviar las ID de confirmación restantes a git log --no-walk
. Pero esto es doloroso en el mejor de los casos. Ver la respuesta de Tim Beigeleisen usando awk para más.
Tal vez me esté perdiendo algo, pero ¿no sería esto suficiente?
git log --pretty=format:"%ad - %an: %s" --after="2016-01-31" --until="2017-03-10" --author="John Doe"
Ver tambien here
Usted puede
Pero como mencionó @torek, es posible que no puedas hacer esto con Git puro. Una opción sería canalizar una salida de formato bonito desde el git log
a awk
y verificar la fecha del autor allí:
git log --date=iso --pretty=format:''%ad%x08%aN'' | awk ''$0 >= "2013-01-01" && $0 <= "2013-12-01"''
Aquí, el %ad
da la fecha del autor en formato ISO, y %aN
le da el nombre del autor.