Поиск наиболее измененных файлов в Git - PullRequest
90 голосов
/ 07 октября 2011

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

Ответы [ 9 ]

130 голосов
/ 07 октября 2011

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

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

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

40 голосов
/ 05 февраля 2016

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

РЕДАКТИРОВАТЬ: Git усилия это просто сценарий Bash вы можете найти здесь и адаптироваться к вашим потребностям, если вам нужно что-то более особенное.

12 голосов
/ 28 декабря 2013

Я заметил, что оба ответа Марка и sehe не --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 голосов
/ 18 ноября 2015

Это версия для 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
3 голосов
/ 28 августа 2013

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

git log --pretty=format: --name-only | sort | uniq -c | sort -Descending | select -First 10
2 голосов
/ 03 июля 2014
git whatchanged --all | \grep "\.\.\." | cut -d' ' -f5- | cut -f2- | sort | uniq -c | sort

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

0 голосов
/ 03 мая 2019

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

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

git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20
0 голосов
/ 08 октября 2012

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

git log  --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...