usar - git: registro de cambios día a día
revertir cambios en un archivo git (5)
Aquí está sucio, pero la versión de trabajo del script que se me ocurrió:
#!/bin/bash
# Generates changelog day by day
NEXT=$(date +%F)
echo "CHANGELOG"
echo ----------------------
git log --no-merges --format="%cd" --date=short | sort -u -r | while read DATE ; do
echo
echo [$DATE]
GIT_PAGER=cat git log --no-merges --format=" * %s" --since=$DATE --until=$NEXT
NEXT=$DATE
done
Cómo generar el registro de cambios de las confirmaciones agrupadas por fecha, en formato:
[date today]
- commit message1
- commit message2
- commit message3
...
[date day+3]
- commit message1
- commit message2
- commit message3
...
(skip this day if no commits)
[date day+1]
- commit message1
- commit message2
- commit message3
...
[date since]
- commit message1
- commit message2
- commit message3
¿Algún comando git log, o script de bash inteligente?
Escribí un script en python para crear un registro git semana a semana.
Usted podría fácilmente cambiarlo a días, meses, etc. cambiando el timedelta
Eso requeriría sin duda algún tipo de guión.
Un poco como esta commandline-fu
for k in `git branch|perl -pe s/^..//`;do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k|head -n 1`//t$k;done|sort -r
(No es exactamente lo que buscas, pero aún así te da una idea)
Sé sobre GitStats que también tiene datos organizados por fecha (pero no los mensajes de confirmación)
Nota: la parte de la git branch
de este comando no está ajustada para las secuencias de comandos, como comenta Jakub Narębski .
git for-each-ref
o git show-ref
son candidatos naturales para los comandos de scripting, ya que son comandos de plomería .
No pude obtener la respuesta aceptada para manejar las confirmaciones de hoy, ya que mi configuración no manejó la variable NEXT correctamente en la primera iteración. Los parámetros de registro de Git también aceptarán una hora, lo que elimina la necesidad de una fecha SIGUIENTE:
#!/bin/bash
# Generates changelog day by day
echo "CHANGELOG"
echo ----------------------
git log --no-merges --format="%cd" --date=short | sort -u -r | while read DATE ; do
echo
echo [$DATE]
GIT_PAGER=cat git log --no-merges --format=" * %s" --since="$DATE 00:00:00" --until="$DATE 24:00:00"
done
git log
tiene --since
and --until
, no debería ser difícil envolver algunas cosas alrededor de eso.