Поиск большинства измененных файлов в Git

Как я могу показать файлы в Git, которые чаще всего меняются?

Ответ 1

вы можете использовать команду git effort (из пакета git-extras), которая показывает статистику о том, сколько коммитов на файлы (за фиксированные и активные дни).

EDIT: git усилие - это просто bash script вы можете найти здесь и адаптироваться к вашим потребностям, если вам что-то нужно более специальные.

Ответ 2

Вы можете сделать что-то вроде следующего:

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

Журнал просто выводит имена файлов, которые были изменены в каждой фиксации, а остальная часть просто сортирует и выводит 10 наиболее часто встречающихся имен файлов.

Ответ 3

Я заметил, что и Маркс, и sehes ответы не --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

Ответ 4

Для powershell, если вы установили git bash

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

Ответ 5

Это версия 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

Ответ 6

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

Если вы хотите видеть только ваши файлы, добавьте --author в git whatchanged --author=name --all.

Ответ 7

Мы также можем найти файлы, измененные между двумя коммитами или ветвями, например,

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

Ответ 8

Это, вероятно, очевидно, но предоставленные запросы будут показывать все файлы, но, возможно, вам не интересно знать, что ваши файлы конфигурации или проекта наиболее обновляются. Простой grep будет изолировать ваши файлы кода, например:

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

Ответ 9

Старый вопрос, но я думаю, что все еще очень полезный вопрос. Вот рабочий пример в простой 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