git中是否有办法计算给定分支上给定用户的总删除和添加数?类似的东西在github上,在图表部分有一个图表,显示总添加和删除但只在主分支...我认为如果他们这样做,这也很可能在git,所以,有人知道怎么做吗?
提前谢谢。
答案 0 :(得分:37)
我不认为Git有任何内置命令可以做到这一点。但是在其他一些标准实用程序的帮助下,它可以完成。这是一个通过awk过滤Git日志输出的示例,以获取总插入和删除的摘要:
git log --author=$USER --shortstat $BRANCH | \
awk '/^ [0-9]/ { f += $1; i += $4; d += $6 } \
END { printf("%d files changed, %d insertions(+), %d deletions(-)", f, i, d) }'
答案 1 :(得分:4)
我基于此推出了自己的内容以覆盖更新的git,其中不插入0个插入或删除:
git log --author=$USER --shortstat $BRANCH |
ruby -e 'puts $<.read.scan(/(\d+) \w+\(([+-])\)/).group_by(&:last).
map{|s,ds|s+ds.map(&:first).map(&:to_i).inject(0,&:+).to_s}.join(", ")'
这只会打印插入和删除总计,例如:+7108, -6742
如果你想要更改文件总数,这个有点hacky¹版本将会:
git log --author=$USER --stat=99999999 $BRANCH |
ruby -e 'f,a,d = $<.read.scan(/^ (.*?)\s+\|\s+\d+\s(\+*)(\-*)$/).transpose;
puts [f.uniq.length, " files, +", a.join.length, ", -", d.join.length].join'
输出如下所示:97 files, +3701, -3598
文件总数是所有提交中唯一文件名的数量,而不是每次提交时更改的文件数的总和,这是原始答案为您提供的。
¹999…
这是因为我们确实计算了+
和-
的数量,我们需要git不要将它们限制为默认宽度,所以我们给它一个很长的宽度来使用。