【问题标题】:count line changes with git?用 git 计算行更改?
【发布时间】:2011-06-05 03:19:41
【问题描述】:

有没有一种简单的方法可以向 git 询问我在特定日期范围内添加(或添加和删除)的行数?

我在 Windows、Linux 和 TortoiseGit(Windows) 上使用 git

【问题讨论】:

  • 两位发帖人似乎都错过了一个--numstat 选项,它提供了比--stat 更机器可读的格式。
  • @Jefromi:是什么让你认为我错过了它?在awk 中,'1 个文件已更改,2 个插入(+),0 个删除(-)' 并不比 '2 0 .gitconfig' 更难解析,并且可以让我计算更改的文件数量!
  • 还可以查看@quorian's great answer,它提供了添加、删除和修改的行数。

标签: git tortoisegit


【解决方案1】:

Seth Robertson's answer 的基础上,(+1 赛斯!)awk 将为您统计列数:

% git log --stat --author $(git config --get user.email) --since="last year" --until="last month" | awk -F',' '/files? changed/ {
    files += $1
    insertions += $2
    deletions += $3
    print
}
END {
    print "Files Changed: " files
    print "Insertions: " insertions
    print "Deletions: " deletions
    print "Lines changed: " insertions + deletions

}'

 

【讨论】:

  • 这看起来很有用,但是我如何在终端中调用它呢?不熟悉awk
  • @WallaceSidhrée:在bashzsh 中,您可以直接输入我的答案(不带前导% 。或者您可以将其放入您的${PATH} 某处的脚本中.
  • 这会产生不正确的结果! stat 的摘要行可能隐藏 deletionsinsertions 如果没有。如果该特定提交中没有插入,则 git 可能会显示 1 file changed, 6 deletions(-),从而使您的脚本将删除添加到 insertions 变量中。
  • 可以修改 awk 脚本以使用匹配的match($0, /([0-9]+) files? changed(, ([0-9]+) insertions?\(\+\))?(, ([0-9]+) deletions?\(\-\))?/, m); files += m[1]; insertions += m[3]; deletions += m[5];
  • 您当时的回答绝对正确!这个答案stackoverflow.com/a/13056003/804840 中的 cmets 表示输出在 1.7.9 -> 1.7.10 补丁期间发生了变化。
【解决方案2】:
git log --stat --author me --since="last year" --until="last month"

然后您可以对底部的 --stat 信息进行后处理。

【讨论】:

    【解决方案3】:

    如果有人对回购的整体统计数据感兴趣:

    1. 右键点击repo文件夹,选择TortoiseGit/Show Log
    2. 点击对话框底部的统计

    【讨论】:

      猜你喜欢
      • 2022-06-11
      • 2017-10-08
      • 2011-02-01
      • 1970-01-01
      • 2010-11-18
      • 2019-08-31
      • 2021-06-17
      • 1970-01-01
      相关资源
      最近更新 更多