"git diff --stat" y "git log --stat" muestran resultados como:
$ git diff -C --stat HEAD c9af3e6136e8aec1f79368c2a6164e56bf7a7e07
 app/controllers/application_controller.rb |   34 +++-------------------------
 1 files changed, 4 insertions(+), 30 deletions(-)
Pero lo que realmente sucedió en ese compromiso fue que se cambiaron 4 líneas y se eliminaron 26 líneas, lo que es diferente a agregar 4 líneas y eliminar 30.
¿Hay alguna forma de obtener los LOC delta (26 en este caso)? Realmente no me importa diferenciar entre líneas agregadas o eliminadas.

--word-diff. Eso podría ser más útil.git diff --numstatse desglosa por archivo. Para ver el total agregado / eliminado para la diferencia, puede canalizarlo a awk:git diff --numstat | awk '{ added += $1; removed += $2 } END { print "+" added " -" removed }'git diff --shortstat. En mi experiencia, es equivalente a acumular la salida degit diff --numstat.--cachedSi desea conocer las líneas agregadas / cambiadas / eliminadas por una confirmación con id
commit-id, puede usaro
Si desea conocer las líneas agregadas / cambiadas / eliminadas por un rango de confirmaciones, puede usar
Si desea conocer las líneas agregadas / cambiadas / eliminadas por cada confirmación, puede usar
fuente
Si todos sus archivos están preparados para su confirmación, vea el proceso de
--numstatesta manera:fuente
git usa diff "unificado", que solo ha agregado y eliminado líneas, como formato diff. Tienes que hacer algo externo para obtener una diferencia que muestre agregar, eliminar y cambiar información.
https://wiki.postgresql.org/wiki/Working_with_Git#Context_diffs_with_Git da enlaces a una secuencia de comandos que permite ejecutar viejo "diff" regular - y de que se puede generar un "contexto" diff de salida. La diferencia de contexto muestra líneas agregadas, eliminadas y modificadas, lo que debería permitirle obtener los datos que desea.
fuente
Puede utilizar
diffstatpara mostrar el número de líneas modificadas. Por ejemplo:La
-Copción es para obtener resultados coloreados; la-mopción es para mostrar el número de líneas modificadas. Salida de muestra:El recuento del número de líneas modificadas es aproximado, como
man diffstatdice:Una diferencia importante entre
git diff --statydiffstat:diffstatno muestra movimientos / cambios de nombre de archivos (por ejemploapp/{a.rb => b.rb}).fuente