在git中有没有办法计算给定分支上给定用户的总删除和添加?类似的东西在github上,在图表部分有一个图表,显示总添加和删除但只在主分支...我认为如果他们这样做,这也很可能在git,所以,有人知道怎么做吗?
先感谢您.
Dan*_*ing 38
我不认为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) }'
Run Code Online (Sandbox Code Playgroud)
正如这里所回答的:Git:如何从单个 git 提交中获取 +/-(插入和删除)的总数
Git 提供简短的统计信息(更改的文件总数、插入数量、删除数量):
git diff --shortstat COMMIT_HASH~ COMMIT_HASH
Run Code Online (Sandbox Code Playgroud)
我基于此推出了自己的版本,以覆盖较新的 git 的情况,其中不打印 0 插入或删除:
\n\ngit log --author=$USER --shortstat $BRANCH | \n ruby -e \'puts $<.read.scan(/(\\d+) \\w+\\(([+-])\\)/).group_by(&:last).\n map{|s,ds|s+ds.map(&:first).map(&:to_i).inject(0,&:+).to_s}.join(", ")\'\nRun Code Online (Sandbox Code Playgroud)\n\n这只是打印插入和删除总数,例如:+7108, -6742
如果您也希望文件全部更改,这个稍微 hacky\xc2\xb9 版本就可以了:
\n\ngit log --author=$USER --stat=99999999 $BRANCH | \n ruby -e \'f,a,d = $<.read.scan(/^ (.*?)\\s+\\|\\s+\\d+\\s(\\+*)(\\-*)$/).transpose;\n puts [f.uniq.length, " files, +", a.join.length, ", -", d.join.length].join\'\nRun Code Online (Sandbox Code Playgroud)\n\n输出如下所示:97 files, +3701, -3598
文件总数是所有提交中唯一文件名的数量,而不是每次提交时更改的文件数量的总和,这是原始答案给您的。
\n\n\xc2\xb9 问题999\xe2\x80\xa6是因为我们实际上是在计算+s 和-s 的数量,并且我们需要 git 不要将它们限制为默认宽度,所以我们给它一个非常长的宽度来使用。
| 归档时间: |
|
| 查看次数: |
7981 次 |
| 最近记录: |