Respuestas:
puede usar el comando git effort(del git-extraspaquete) que muestra estadísticas sobre cuántas confirmaciones por archivo (por confirmaciones y días activos).
EDITAR: el esfuerzo de git es solo un script bash que puede encontrar aquí y adaptarlo a sus necesidades si necesita algo más especial.
git help effortno tiene información al respecto: /). Supongo que el primer conjunto de resultados está ordenado por nombre de archivo y el segundo por número de confirmaciones por archivo. La página de manual también menciona github.com/tj/git-extras/issues para informar problemas
Podrías hacer algo como lo siguiente:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
El registro solo muestra los nombres de los archivos que se han cambiado en cada confirmación, mientras que el resto solo clasifica y genera los 10 nombres de archivo que aparecen con más frecuencia.
--branchesa la git logsi desea incluir confirmaciones en cualquiera de sus ramas locales.
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
Noté que tanto
las
respuestas de Mark
como las de
sehe no corresponden a --followlos archivos, es decir, se detienen una vez que alcanzan un cambio de nombre de archivo. Este script será mucho más lento, pero funcionará con ese 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
rolesdirectorio para mi caso, pero se modifica fácilmente para adaptarse a su caso de uso.
Esta es una versión de Windows
git log --pretty=format: --name-only > allfiles.csv
luego abre en 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),"")
crear tabla dinámica
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
Antigua pregunta, pero creo que sigue siendo una pregunta muy útil. Aquí hay un ejemplo práctico en powershell puro. Esto obtendrá los 10 archivos más modificados en su repositorio con respecto a la rama en la que se encuentra.
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
También podemos encontrar archivos cambiados entre dos confirmaciones o ramas, por ejemplo
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
Esto probablemente sea obvio, pero las consultas proporcionadas mostrarán todos los archivos, pero quizás no le interese saber que su configuración o los archivos del proyecto son los más actualizados. Un simple grep aislará sus archivos de código, por ejemplo:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20