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

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


当前回答

虽然以上答案都是正确的,但如果你需要计算最后提交的次数,下面的答案是方便的

下面一个是最近5次提交的计数

Git diff $(Git log -5——pretty=format:"%h" | tail -1)——shortstat

获取最近10次提交的计数

Git diff $(Git log -10——pretty=format:"%h" | tail -1)——shortstat

generic -用你需要的最后提交数改变N

git diff $(git log -N——pretty=format:"%h" | tail -1)——shortstat

获取自启动以来所有提交的计数

Git diff $(Git log——pretty=format:"%h" | tail -1)——shortstat

其他回答

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

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 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 log——stat。

该命令将比较本地文件和远程文件

git diff --stat
git log --numstat 

只给你数字