Finding most changed files in Git

2019-01-10 00:58发布

How can I show files in Git which change most often?

标签: git shell
8条回答
放我归山
2楼-- · 2019-01-10 01:03

We can also find out files changed between two commits or branches, for e.g.

git log  --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50 
查看更多
Animai°情兽
3楼-- · 2019-01-10 01:04

This is probably obvious, but, the queries provided will show all files, but, perhaps you're not interested in knowing that your configuration or project files are the most updated. A simple grep will isolate to your code files, for example:

git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20
查看更多
手持菜刀,她持情操
4楼-- · 2019-01-10 01:13

I noticed that both Mark’s and sehe’s answers do not --follow the files, that is to say they stop once they reach a file rename. This script will be much slower, but will work for that purpose.

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

查看更多
欢心
5楼-- · 2019-01-10 01:13

This is a windows version

git log --pretty=format: --name-only  > allfiles.csv

then open in 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),"")

create pivot table

values: Type
  Filter: isFilename = true
  Rows : Type
  Sub : FileName

click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
查看更多
家丑人穷心不美
6楼-- · 2019-01-10 01:15

For powershell, assuming you got git bash installed

git log --pretty=format: --name-only | sort | uniq -c | sort -Descending | select -First 10
查看更多
\"骚年 ilove
7楼-- · 2019-01-10 01:16

You could do something like the following:

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

The log just outputs the names of the files that have been changed in each commit, while the rest of it just sorts and outputs the top 10 most frequently appearing filenames.

查看更多
登录 后发表回答