Respostas:
você pode usar o comando git effort
(do git-extras
pacote) que mostra estatísticas sobre quantos commits por arquivos (por commits e dias ativos).
EDIT: git effort é apenas um script bash que você pode encontrar aqui e adaptar às suas necessidades se precisar de algo mais especial.
git help effort
não tem informações sobre isso: /). Presumo que o primeiro conjunto de resultados seja ordenado por nome de arquivo e o segundo por número de commit por arquivo. A página do manual também menciona github.com/tj/git-extras/issues para relatar problemas
Você poderia fazer algo como o seguinte:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
O log apenas exibe os nomes dos arquivos que foram alterados em cada confirmação, enquanto o resto apenas classifica e exibe os 10 nomes de arquivo que aparecem com mais frequência.
--branches
ao git log
se quiser incluir commits em qualquer um de seus branches locais.
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
Percebi que as
respostas de Mark
e
Sehe não correspondem --follow
aos arquivos, ou seja, elas param quando chegam a uma renomeação de arquivo. Este script será muito mais lento, mas funcionará para esse propósito.
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
roles
diretório do meu caso, mas é facilmente modificado para se adequar ao seu caso de uso.
Esta é uma versão do Windows
git log --pretty=format: --name-only > allfiles.csv
então abra no 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),"")
criar tabela dinâmica
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
Pergunta antiga, mas acho que ainda é uma pergunta muito útil. Aqui está um exemplo de trabalho em PowerShell direto. Isso obterá os 10 arquivos mais alterados em seu repositório com relação ao branch em que você está.
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
Nós também podemos descobrir arquivos alterados entre dois commits ou branches, por exemplo
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
Isso provavelmente é óbvio, mas as consultas fornecidas mostrarão todos os arquivos, mas, talvez você não esteja interessado em saber se seus arquivos de configuração ou projeto são os mais atualizados. Um simples grep irá isolar seus arquivos de código, por exemplo:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20