я хочу видеть количество удаленной/добавленной строки, сгруппированных автором для данного ответвления в истории мерзавца. существует git shortlog -s
который показывает мне количество фиксаций на автора. действительно ли там что-нибудь подобно для получения полного diffstat?
Начиная с , вопрос SO «Как подсчитать общее количество строк, измененных конкретным автором в репозитории Git?» не совсем удовлетворителен, commandlinefu имеет альтернативы (хотя и не для каждой ветки):
git ls-files | while read i; do git blame $i | sed -e 's/^[^(]*(//' -e 's/^\([^[:digit:]]*\)[[:space:]]\+[[:digit:]].*/\1/'; done | sort | uniq -ic | sort -nr
Он включает двоичные файлы, что нехорошо, поэтому вы можете (чтобы удалить действительно случайные двоичные файлы):
git ls-files | grep -v "\.\(pdf\|psd\|tif\)$"
(Примечание: как прокомментировал по trcarden , -x
или - исключить
вариант не работает.
Из git ls-files
справочной страницы , git ls-files -x "* pdf" ...
будет исключен только неотслеживаемое содержимое , если - другие
или - игнорируемые
были добавлены в команду git ls-files
.)
Или:
git ls-files "*.py" "*.html" "*.css"
], чтобы включить только определенные типы файлов.
Тем не менее, решение на основе « git log
» должно быть лучше, например:
git log --numstat --pretty="%H" --author="Your Name" commit1..commit2 | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}'
, но опять же, это для одного пути (здесь 2 фиксации), а не для все ветки по веткам.