„git diff --stat” i „git log --stat” pokazują dane wyjściowe:
$ git diff -C --stat HEAD c9af3e6136e8aec1f79368c2a6164e56bf7a7e07
app/controllers/application_controller.rb | 34 +++-------------------------
1 files changed, 4 insertions(+), 30 deletions(-)
Ale to, co naprawdę wydarzyło się w tym zatwierdzeniu, to zmiana 4 linii i usunięcie 26 linii, co różni się od dodania 4 linii i usunięcia 30.
Czy istnieje sposób na uzyskanie wartości delta LOC (w tym przypadku 26)? Nie obchodzi mnie rozróżnianie między dodanymi lub usuniętymi liniami.
--word-diff
. To mogłoby być bardziej przydatne.git diff --numstat
są podzielone według plików. Aby zobaczyć sumę dodaną / usuniętą dla różnicy, możesz przesłać ją potokiem do awk:git diff --numstat | awk '{ added += $1; removed += $2 } END { print "+" added " -" removed }'
git diff --shortstat
. Z mojego doświadczenia wynika, że jest to równoznaczne z nagromadzeniem produkcjigit diff --numstat
.--cached
Jeśli chcesz wiedzieć, jakie wiersze zostały dodane / zmienione / usunięte przez zatwierdzenie z id
commit-id
, możesz użyćlub
Jeśli chcesz znać linie dodane / zmienione / usunięte przez zatwierdzenia zakresu, możesz użyć
Jeśli chcesz wiedzieć, jakie wiersze zostały dodane / zmienione / usunięte przy każdym zatwierdzeniu, możesz użyć
źródło
Jeśli wszystkie twoje pliki są przygotowywane do zatwierdzenia, zobacz to w
--numstat
ten sposób:źródło
git używa "ujednoliconego" diff, który tylko dodał i usunął linie, jako format różnic. Musisz zrobić coś zewnętrznego, aby uzyskać różnicę, która pokazuje dodawanie, usuwanie i zmianę informacji.
https://wiki.postgresql.org/wiki/Working_with_Git#Context_diffs_with_Git udostępnia linki do skryptu, który umożliwia uruchamianie zwykłego starego "diff" - i na tej podstawie można wygenerować "kontekstowe" wyjście różnicowe . Różnica kontekstowa pokazuje dodane, usunięte i zmienione linie, co powinno pozwolić ci uzyskać żądane dane.
źródło
Możesz użyć
diffstat
do pokazania liczby zmodyfikowanych linii. Na przykład:Ta
-C
opcja służy do uzyskania kolorowego wyjścia;-m
opcja jest dla pokazujący liczbę zmodyfikowanych wierszy. Przykładowe dane wyjściowe:Liczba zmodyfikowanych linii jest przybliżona, jak
man diffstat
powiedziano:Jedna główna różnica między
git diff --stat
idiffstat
:diffstat
nie pokazuje przenoszenia / zmiany nazw plików (npapp/{a.rb => b.rb}
.).źródło