Вам нужна опция --stat
, равная git diff
, или, если вы хотите разобрать это в скрипте, опция --numstat
.
git diff --stat <commit-ish> <commit-ish>
--stat
производит читабельный вывод, который вы привыкли видеть после слияний; --numstat
создает хороший макет таблицы, который легко интерпретируется сценариями.
Я почему-то упустил, что вы пытались сделать это одновременно с несколькими коммитами - это задача для git log
. Рон Девера касается этого, но на самом деле вы можете сделать гораздо больше, чем он упоминает. Так как git log
внутренне вызывает механизм diff для печати запрошенной информации, вы можете задать ей любой из параметров diff stat - не просто --shortstat
. Что вы, вероятно, хотите использовать:
git log --author="Your name" --stat <commit1>..<commit2>
но вы также можете использовать --numstat
или --shortstat
. git log
также может выбирать коммиты различными способами - взгляните на документацию . Возможно, вас заинтересуют такие вещи, как --since
(вместо указания диапазонов фиксации, просто выберите коммиты с прошлой недели) и --no-merges
(коммиты слияния фактически не вносят изменений), а также симпатичные параметры вывода (--pretty=oneline, short, medium, full...
).
Вот одна строка для получения полных изменений вместо изменений для каждого коммита из git log (измените параметры выбора коммитов по желанию - это коммиты вами, от commit1 до commit2):
git log --numstat --pretty="%H" --author="Your Name" commit1..commit2 | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}'
(вы должны позволить git log распечатать некоторую идентифицирующую информацию о коммите; я произвольно выбрал хеш, а затем использовал awk, чтобы выделить только строки с тремя полями, которые являются данными со статистической информацией)