在Git中查找大多数已更改的文件

Seb*_*ian 91 git shell

如何在Git中显示最常更改的文件?

Mar*_*air 140

您可以执行以下操作:

git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
Run Code Online (Sandbox Code Playgroud)

日志只输出每次提交中已更改的文件的名称,而其余的只是排序并输出前10个最常出现的文件名.

  • 找到了我的部分答案:`git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | 排序 | uniq -c | 排序 -rg | 头-10` (6认同)
  • 好的。另外,我发现它还报告了很久以前删除的文件。快速修复是限制时间,例如:--since="last year" (2认同)
  • 使用`--since“ 1 month ago”`或其他选项来缩小时间范围也很有帮助 (2认同)

Ase*_*nar 41

您可以使用git effort(来自git-extras包)命令,该命令显示有关每个文件的提交数量的统计信息(按提交和活动天数).

编辑:git努力只是一个bash脚本,你可以在这里找到并适应你的需求,如果你需要更特殊的东西.


小智 13

我注意到 Marksehe的 答案都不--follow是文件,也就是说一旦文件重命名就会停止.这个脚本会慢得多,但可以用于此目的.

git ls-files |
while read aa
do
  printf . >&2
  set $(git log --follow --oneline "$aa" | wc)
  printf '%s\t%s\n' $1 "$aa"
done > bb
echo
sort -nr bb
rm bb
Run Code Online (Sandbox Code Playgroud)

git-most.sh


Oma*_*uez 7

老问题,但我认为仍然是一个非常有用的问题。这是直接 powershell 中的一个工作示例。这将获得您的存储库中与您所在的分支相关的前 10 个更改最多的文件。

git log --pretty=format: --name-only | Where-Object { ![string]::IsNullOrEmpty($_) } | Sort-Object | Group-Object  | Sort-Object -Property Count -Descending | Select-Object -Property Count, Name -First 10
Run Code Online (Sandbox Code Playgroud)


Hai*_*n.Z 6

git-heatmap是一个具有更灵活过滤器的简单节点工具。git-heatmap在项目的文件夹中运行,它将迭代最近 1000 次提交并生成更改最多的文件的热图。您可以检查git-heatmap -h更多过滤器。

在此输入图像描述