2011-10-07 11 views

Respuesta

25

puede utilizar el git effort (del git-extras paquete) orden que muestra estadísticas sobre la cantidad de confirmaciones por archivo (por commits y active dias).

EDITAR: git effort es solo a bash script you can find here y adaptarse a sus necesidades si necesita algo más especial.

+6

¡Oh hombre! Esto es genial. – Sebastian

+0

La salida se dividirá en 2 partes, primero obtendrá los resultados sin clasificar, luego los resultados ordenados (y coloreados). ¿Derecha? – Andy

+0

@Andy parece (y 'git help effort' no tiene información al respecto: /). Supongo que el primer conjunto de resultados se ordena por nombre de archivo, y el segundo por número de confirmaciones por archivo. La página man también menciona https://github.com/tj/git-extras/issues para informar problemas – Asenar

89

Se podría hacer algo como lo siguiente:

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

El registro simplemente imprime los nombres de los archivos que se han cambiado en cada confirmación, mientras que el resto de ella simplemente ordena y da salida a los 10 con mayor frecuencia apareciendo nombres de archivos.

+4

Buena solución. Cada vez que veo tu nombre en la página de etiquetas de git voy a leer lo que escribiste. Y siempre es un placer;) – lucapette

+0

@lucapette: gracias, es amable de su parte decirlo :) –

+0

¿Puede decirme si se basa en la rama actual o si es para todo el repositorio? ¿Qué pasa con las sucursales aún no fusionadas? –

0

También podemos encontrar archivos modificados entre dos confirmaciones o ramas, por ejemplo,

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

Para PowerShell, suponiendo que tenga instalado Git Bash

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

Muchas gracias – StevenMcD

0

Ésta es probablemente obvio, pero, las consultas previstas mostrará todos los archivos, pero, tal vez usted no está interesado en saber que su los archivos de configuración o proyecto son los más actualizados. Un grep sencilla aislará a los archivos de código, por ejemplo:

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

me di cuenta de que ambos Mark’s y sehe’s respuestas no --follow los archivos, es decir, que dejan una vez que alcanzan un cambio de nombre de archivo . Este script será mucho más lento, pero funcionará para 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 

git-most.sh

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

Si sólo desea ver los archivos de complemento a --authorgit whatchanged --author=name --all.

+0

genial, gracias! :) – Yekver

2

Ésta es una versión de Windows

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

luego abrir 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 
Cuestiones relacionadas