"git diff --stat" e "git log --stat" mostram resultados como:
$ git diff -C --stat HEAD c9af3e6136e8aec1f79368c2a6164e56bf7a7e07
app/controllers/application_controller.rb | 34 +++-------------------------
1 files changed, 4 insertions(+), 30 deletions(-)
Mas o que realmente aconteceu naquele commit foi que 4 linhas foram alteradas e 26 linhas foram excluídas, o que é diferente de adicionar 4 linhas e excluir 30.
Existe alguma maneira de obter os LOCs delta (26 neste caso)? Eu realmente não me importo em diferenciar as linhas adicionadas ou removidas.
--word-diff
. Isso pode ser mais útil.git diff --numstat
é dividida por arquivo. Para ver o total adicionado / removido para o diff, você pode canalizá-lo para awk:git diff --numstat | awk '{ added += $1; removed += $2 } END { print "+" added " -" removed }'
git diff --shortstat
. Na minha experiência, é equivalente a acumular a produção degit diff --numstat
.--cached
Se você quiser saber as linhas adicionadas / alteradas / deletadas por um commit com id
commit-id
, você pode usarou
Se você quiser saber as linhas adicionadas / alteradas / excluídas por um commit de intervalo, você pode usar
Se você quiser saber as linhas adicionadas / alteradas / deletadas por cada commit, você pode usar
fonte
Se todos os seus arquivos forem testados para confirmação, veja o que está
--numstat
acontecendo assim:fonte
git usa diff "unificado", que apenas adiciona e exclui linhas, como o formato diff. Você tem que fazer algo externo para obter uma comparação que mostre adicionar, excluir e alterar informações.
https://wiki.postgresql.org/wiki/Working_with_Git#Context_diffs_with_Git fornece links para um script que permite a execução regular de "diff" antigo - e a partir disso você pode gerar uma saída de diff de "contexto" . O diff de contexto mostra linhas adicionadas, removidas e alteradas, o que deve permitir que você obtenha os dados que deseja.
fonte
Você pode usar
diffstat
para mostrar o número de linhas modificadas. Por exemplo:A
-C
opção é obter saída colorida; a-m
opção é mostrar o número de linhas modificadas. Saída de amostra:A contagem para o número de linhas modificadas é aproximada, como
man diffstat
diz:Uma diferença importante entre
git diff --stat
ediffstat
:diffstat
não mostra movimentos / renomeações de arquivos (por exemploapp/{a.rb => b.rb}
).fonte