有没有简单的方法来计算Git中两次提交之间更改的行数?

我知道我可以做一个git diff,并数行,但这似乎很乏味。我还想知道如何做到这一点,在行计数中只包括我自己的提交。


当前回答

对于懒惰的人,使用git log——stat。

其他回答

如果你想检查两个分支或提交之间插入、删除和提交的数量。

使用提交id:

git log <commit-id>..<commit-id> --numstat --pretty="%H" --author="<author-name>" | awk 'NF==3 {added+=$1; deleted+=$2} NF==1 {commit++} END {printf("total lines added: +%d\ntotal lines deleted: -%d\ntotal commits: %d\n", added, deleted, commit)}'

使用分支:

git log <parent-branch>..<child-branch> --numstat --pretty="%H" --author="<author-name>" | awk 'NF==3 {added+=$1; deleted+=$2} NF==1 {commit++} END {printf("total lines added: +%d\ntotal lines deleted: -%d\ntotal commits: %d\n", added, deleted, commit)}'
git diff --stat commit1 commit2

EDIT:您还必须指定提交(如果没有参数,它将工作目录与索引进行比较)。如。

git diff --stat HEAD^ HEAD

比较HEAD和HEAD的父类。

对于懒惰的人,使用git log——stat。

另一种获取指定时间段内所有更改日志的方法

git log --author="Tri Nguyen" --oneline --shortstat --before="2017-03-20" --after="2017-03-10"

输出:

2637cc736 Revert changed code
 1 file changed, 5 insertions(+), 5 deletions(-)
ba8d29402 Fix review
 2 files changed, 4 insertions(+), 11 deletions(-)

对于较长的输出内容,您可以将其导出到文件以获得更好的可读性

git log --author="Tri Nguyen" --oneline --shortstat --before="2017-03-20" --after="2017-03-10" > /mnt/MyChangeLog.txt

Git diff——stat将重复计算修改的行。如果这对你来说是个问题,你可以这样做:

git diff | diffstat -Cm

这将给您相同的输出,除了它将[尝试]区分添加+删除的行和修改的行。