"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 --numstat
se 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
.--cached
Si 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
--numstat
esta 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
diffstat
para mostrar el número de líneas modificadas. Por ejemplo:La
-C
opción es para obtener resultados coloreados; la-m
opció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 diffstat
dice:Una diferencia importante entre
git diff --stat
ydiffstat
:diffstat
no muestra movimientos / cambios de nombre de archivos (por ejemploapp/{a.rb => b.rb}
).fuente