如何在 Git 中显示更改最频繁的文件?
你可以这样做:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
日志只输出在每次提交中更改的文件的名称,其余部分只排序并输出出现频率最高的10个文件名。
我们还可以找到在两次提交或分支之间更改的文件,例如。
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
对于 powershell,假设您已经安装了 git bash
git log --pretty=format: --name-only | sort | uniq -c | sort -Descending | select -First 10
这可能是显而易见的,但是,所提供的查询将显示所有文件,但是,您可能不想知道您的配置或项目文件是最新的。一个简单的 grep 将隔离到您的代码文件,例如:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20
我注意到两者都有 马克的 还有 是的 答案不 --follow的文件,也就是说他们停止一旦他们到达一个文件重命名。这个脚本会慢很多,但是可以为此目的工作。
--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
git whatchanged --all | \grep "\.\.\." | cut -d' ' -f5- | cut -f2- | sort | uniq -c | sort
如果只想查看文件,请将 --author添加到 git whatchanged --author=name --all。
--author
git whatchanged --author=name --all
这是一个 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
您可以使用 git effort(来自 git-extras包)命令,该命令显示每个文件提交多少次(按提交日和活动日计算)的统计数据。
git effort
git-extras
编辑: git 工作是 只是一个 bash 脚本 你可以在这里找到和适应您的需要,如果您需要更特殊的东西。
老问题了,但我觉得还是个很有用的问题。这里是一个直动力外壳的工作示例。这将获得前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
一个具有更灵活过滤器的简单节点工具是 Git-Heat Map。 在项目的文件夹中运行 git-heatmap,它将迭代最后1000次提交,并生成更改最多的文件的热图。 您可以检查 git-heatmap -h以获得更多的过滤器。
git-heatmap
git-heatmap -h