【发布时间】:2011-12-02 22:46:16
【问题描述】:
如何在 Git 中显示最常更改的文件?
【问题讨论】:
如何在 Git 中显示最常更改的文件?
【问题讨论】:
您可以执行以下操作:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
日志仅输出在每次提交中已更改的文件的名称,而其余部分仅排序并输出最常出现的前 10 个文件名。
【讨论】:
--branches 添加到 git log。
--since "1 month ago" 或其他选项来缩小时间窗口也很有帮助
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
您可以使用git effort(来自git-extras 包)命令显示有关每个文件的提交次数的统计信息(按提交和活动天数)。
编辑:git 努力只是一个 bash 脚本you can find here,如果您需要更特别的东西,可以适应您的需求。
【讨论】:
git help effort 没有关于它的信息:/)。我假设第一组结果按文件名排序,第二组按每个文件的提交数排序。手册页还提到 github.com/tj/git-extras/issues 报告问题
【讨论】:
roles 目录中的每个文件夹,但很容易修改以适应您的用例。
老问题,但我认为仍然是一个非常有用的问题。这是直接 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
【讨论】:
这是windows版本
git log --pretty=format: --name-only > allfiles.csv
然后用excel打开
A1: FileName
A2: isVisibleFilename >> =IFERROR(IF(C2>0,TRUE,FALSE),FALSE)
A3: DotLocation >> =FIND("@",SUBSTITUTE(A2,".","@",(LEN(A2)-LEN(SUBSTITUTE(A2,".","")))/LEN(".")))
A4: HasExt >> =C2>1
A5: TYPE >> =IF(D2=TRUE,MID(A2,C2+1,18),"")
创建数据透视表
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
【讨论】:
对于 powershell,假设你安装了 git bash
git log --pretty=format: --name-only | sort | uniq -c | sort -Descending | select -First 10
【讨论】:
select 是什么?
Select-Objectdocs.microsoft.com/en-us/powershell/module/…的默认别名
git whatchanged --all | \grep "\.\.\." | cut -d' ' -f5- | cut -f2- | sort | uniq -c | sort
如果您只想查看您的文件,请将--author 添加到git whatchanged --author=name --all。
【讨论】:
我们还可以找出两个提交或分支之间更改的文件,例如
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
【讨论】:
这可能很明显,但是,提供的查询将显示所有文件,但是,也许您不想知道您的配置或项目文件是最新的。一个简单的 grep 将隔离到您的代码文件,例如:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20
【讨论】: