有没有简单的方法来计算Git中两次提交之间更改的行数?
我知道我可以做一个git diff,并数行,但这似乎很乏味。我还想知道如何做到这一点,在行计数中只包括我自己的提交。
有没有简单的方法来计算Git中两次提交之间更改的行数?
我知道我可以做一个git diff,并数行,但这似乎很乏味。我还想知道如何做到这一点,在行计数中只包括我自己的提交。
当前回答
如果你想检查两个分支或提交之间插入、删除和提交的数量。
使用提交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)}'
其他回答
如果你想检查两个分支或提交之间插入、删除和提交的数量。
使用提交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 summary --since=yesterday
total: 114 file changes, 13800 insertions(+) 638 deletions(-)
底层命令如下所示:
git log --numstat --format="" "$@" | awk '{files += 1}{ins += $1}{del += $2} END{print "total: "files" files, "ins" insertions(+) "del" deletions(-)"}'
注意log命令中的$@用来传递参数,比如——author="Brian"或——since=yesterday。
转逃awk并将其放入git别名中是很麻烦的,因此,我将其放入我的路径(~/bin/git-stat-sum)的可执行脚本中,然后在我的.gitconfig中使用别名中的脚本:
[alias]
summary = !git-stat-sum \"$@\"
而且效果非常好。最后要注意的一点是,文件更改是文件更改的数量,而不是更改的惟一文件的数量。这就是我想要的,但可能不是你想要的。
这里还有一两个例子
git summary --author=brian
git summary master..dev
# combine them as you like
git summary --author=brian master..dev
git summary --all
实际上,你应该能够用git summary替换任何git日志命令。
关于上次提交的简短统计信息:
git diff --shortstat HEAD~1 HEAD
在我的例子中,这给了我以下信息:
254 files changed, 37 insertions(+), 10773 deletions(-)
插入和删除是受影响的行。
git log --numstat
只给你数字
git diff --shortstat
给出修改和添加的行数。这只适用于未分阶段的更改。与树枝比较:
git diff --shortstat some-branch