tipos - ¿Cómo puedo calcular el número de líneas cambiadas entre dos confirmaciones en git?
git ver archivos modificados (6)
Desea la opción --stat
de git diff
, o si está buscando analizar esto en un script, la opción --numstat
.
git diff --stat <commit-ish> <commit-ish>
--stat
produce la salida legible por humanos que está acostumbrado a ver después de las combinaciones; --numstat
produce un diseño de tabla agradable que los scripts pueden interpretar fácilmente.
De alguna manera, extrañé que estaba buscando hacer esto en múltiples confirmaciones al mismo tiempo, esa es una tarea para el git log
. Ron DeVera se refiere a esto, pero en realidad puedes hacer mucho más de lo que menciona. Ya que git log
llama internamente a la maquinaria de diferencias para imprimir la información solicitada, puede darle cualquiera de las opciones de estadísticas de diferencias, no solo --shortstat
. Lo que probablemente quieras usar es:
git log --author="Your name" --stat <commit1>..<commit2>
pero también puedes usar --numstat
o --shortstat
. git log
también puede seleccionar confirmaciones de otras formas: eche un vistazo a la documentation . Es posible que le interesen cosas como --since
(en lugar de especificar rangos de confirmación, solo seleccione confirmaciones desde la semana pasada) y --no-merges
(la combinación de combinaciones no introduce cambios), así como las bonitas opciones de salida ( --pretty=oneline, short, medium, full...
).
Aquí hay un resumen para obtener los cambios totales en lugar de los cambios por confirmación del git log (cambie las opciones de selección de confirmación según lo desee; esto lo confirma usted, desde commit1 hasta commit2):
git log --numstat --pretty="%H" --author="Your Name" commit1..commit2 | awk ''NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d/n", plus, minus)}''
(tienes que dejar que git log imprima algo de información de identificación sobre el compromiso; elegí arbitrariamente el hash, luego usé awk para seleccionar solo las líneas con tres campos, que son los que contienen la información estadística)
¿Hay alguna manera fácil de calcular el número de líneas cambiadas entre dos confirmaciones en git? Sé que puedo hacer un git diff
, y contar las líneas, pero esto parece tedioso. También me gustaría saber cómo puedo hacer esto, incluyendo solo mis propios compromisos en los recuentos de líneas.
Otra forma de obtener todos los registros de cambios en un período de tiempo específico
git log --author="Tri Nguyen" --oneline --shortstat --before="2017-03-20" --after="2017-03-10"
Salida:
2637cc736 Revert changed code
1 file changed, 5 insertions(+), 5 deletions(-)
ba8d29402 Fix review
2 files changed, 4 insertions(+), 11 deletions(-)
Con un contenido de salida largo, puede exportar a un archivo para que sea más legible
git log --author="Tri Nguyen" --oneline --shortstat --before="2017-03-20" --after="2017-03-10" > /mnt/MyChangeLog.txt
Para los perezosos, use git log --stat
.
Suponiendo que desea comparar todas sus confirmaciones entre abcd123 (la primera confirmación) y wxyz789 (la última confirmación), inclusive:
git log wxyz789^..abcd123 --oneline --shortstat --author="Mike Surname"
Esto da salida sucinta como:
abcd123 Made things better
3 files changed, 14 insertions(+), 159 deletions(-)
wxyz789 Made things more betterer
26 files changed, 53 insertions(+), 58 deletions(-)
git diff --shortstat
te da solo el número de líneas cambiadas y agregadas.
git diff --stat commit1 commit2
EDITAR: También debe especificar las confirmaciones (sin parámetros, compara el directorio de trabajo con el índice). P.ej
git diff --stat HEAD^ HEAD
Comparar el padre de HEAD
con HEAD
.