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

时间:2011-10-07 11:25:41

标签: git shell

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

9 个答案:

答案 0 :(得分:121)

您可以执行以下操作:

git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10

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

答案 1 :(得分:38)

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

编辑:git努力只是一个bash脚本you can find here,如果你需要更特别的东西,它会适应你的需求。

答案 2 :(得分:12)

我注意到了两者 Mark’ssehe’s 答案不是--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-most.sh

答案 3 :(得分:3)

对于powershell,假设你安装了git bash

git log --pretty=format: --name-only | sort | uniq -c | sort -Descending | select -First 10

答案 4 :(得分:3)

这是一个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

答案 5 :(得分:2)

git whatchanged --all | \grep "\.\.\." | cut -d' ' -f5- | cut -f2- | sort | uniq -c | sort

如果您只想查看文件,请将--author添加到git whatchanged --author=name --all

答案 6 :(得分:0)

我们还可以找出在两个提交或分支之间更改的文件,例如

git log  --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50 

答案 7 :(得分:0)

这可能是显而易见的,但是,提供的查询将显示所有文件,但是,您可能不知道您的配置或项目文件是最新的。一个简单的grep将隔离到您的代码文件,例如:

git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20

答案 8 :(得分:0)

旧问题,但我认为这仍然是一个非常有用的问题。这是笔直的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