Risposte:
puoi usare il comando git effort
(dal git-extras
pacchetto) che mostra le statistiche su quanti commit per file (per commit e giorni attivi).
EDIT: git effort è solo uno script bash che puoi trovare qui e adattare alle tue esigenze se hai bisogno di qualcosa di più speciale.
git help effort
non ha informazioni al riguardo: /). Presumo che il primo set di risultati sia ordinato per nome file e il secondo per numero di commit per file. La pagina man menziona anche github.com/tj/git-extras/issues per segnalare problemi
Potresti fare qualcosa come il seguente:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
Il registro restituisce solo i nomi dei file che sono stati modificati in ogni commit, mentre il resto ordina e restituisce solo i primi 10 nomi di file che appaiono più di frequente.
--branches
a git log
se vuoi includere i commit in uno dei tuoi rami locali.
--since "1 month ago"
o altre opzioni per restringere la finestra temporale
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
Ho notato che sia
di Mark
e
di sehe
risposte non --follow
i file, vale a dire che si fermano una volta che raggiungono un file ridenominazione. Questo script sarà molto più lento, ma funzionerà a tale scopo.
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
directory per il mio caso, ma è facilmente modificabile per adattarsi al tuo caso d'uso.
Questa è una versione per Windows
git log --pretty=format: --name-only > allfiles.csv
quindi apri in 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),"")
creare una tabella pivot
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
Vecchia domanda, ma penso ancora una domanda molto utile. Ecco un esempio funzionante in PowerShell diretto. Questo otterrà i primi 10 file più modificati nel tuo repository rispetto al ramo in cui ti trovi.
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
Possiamo anche scoprire i file modificati tra due commit o branch, ad es
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
Questo è probabilmente ovvio, ma le query fornite mostreranno tutti i file, ma forse non ti interessa sapere che i tuoi file di configurazione o di progetto sono i più aggiornati. Un semplice grep isolerà i tuoi file di codice, ad esempio:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20