"git diff --stat" и "git log --stat" выводят следующий результат:
$ git diff -C --stat HEAD c9af3e6136e8aec1f79368c2a6164e56bf7a7e07
app/controllers/application_controller.rb | 34 +++-------------------------
1 files changed, 4 insertions(+), 30 deletions(-)
Но что на самом деле произошло в этой фиксации, так это то, что 4 строки были изменены и 26 строк были удалены, что отличается от добавления 4 строк и удаления 30.
Есть ли способ получить дельта-LOC (в данном случае 26)? Меня действительно не волнует различие между добавленными или удаленными строками.
--word-diff
. Это могло быть более полезно.git diff --numstat
разбивается по файлам. Чтобы увидеть общее количество добавленных / удаленных для различий, вы можетеgit diff --numstat | awk '{ added += $1; removed += $2 } END { print "+" added " -" removed }'
git diff --shortstat
. По моему опыту, это эквивалентно накоплению продукцииgit diff --numstat
.--cached
Если вы хотите знать строки, добавленные / измененные / удаленные фиксацией с идентификатором
commit-id
, вы можете использоватьили
Если вы хотите знать, какие строки добавлены / изменены / удалены коммитами диапазона, вы можете использовать
Если вы хотите знать, какие строки добавлены / изменены / удалены каждой фиксацией, вы можете использовать
источник
Если все ваши файлы подготовлены для фиксации, для этого выполните
--numstat
следующие действия:источник
git использует "унифицированный" diff, который только добавляет и удаляет строки в качестве формата diff. Вы должны сделать что-то внешнее, чтобы получить различие, которое показывает добавление, удаление и изменение информации.
https://wiki.postgresql.org/wiki/Working_with_Git#Context_diffs_with_Git дает ссылки на скрипт, который позволяет запускать обычный старый "diff" - и из этого вы можете сгенерировать "контекстный" вывод diff . Различия контекста действительно показывают добавленные, удаленные и измененные строки, что должно позволить вам получить нужные данные.
источник
Вы можете использовать,
diffstat
чтобы показать количество измененных строк. Например:-C
Опция для получения colourised вывода;-m
опция для показа количества измененных строк. Пример вывода:Подсчет количества измененных строк является приблизительным, как
man diffstat
сказано:Одно из основных различий между
git diff --stat
иdiffstat
:diffstat
не показывает перемещение / переименование файлов (напримерapp/{a.rb => b.rb}
).источник