Antworten:
Sie können den Befehl git effort(aus dem git-extrasPaket) verwenden, der Statistiken darüber anzeigt, wie viele Commits pro Datei (nach Commits und aktiven Tagen) vorliegen.
BEARBEITEN: Git-Aufwand ist nur ein Bash-Skript, das Sie hier finden und an Ihre Bedürfnisse anpassen können, wenn Sie etwas Besonderes benötigen.
git help efforthat keine Informationen darüber: /). Ich gehe davon aus, dass die ersten Ergebnisse nach Dateinamen und die zweiten nach Anzahl der Festschreibungen pro Datei sortiert sind. Die Manpage erwähnt auch github.com/tj/git-extras/issues , um Probleme zu melden
Sie könnten Folgendes tun:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
Das Protokoll gibt nur die Namen der Dateien aus, die bei jedem Commit geändert wurden, während der Rest nur die 10 am häufigsten vorkommenden Dateinamen sortiert und ausgibt.
--branches, git logwenn Sie Commits in eine Ihrer lokalen Filialen aufnehmen möchten.
--since "1 month ago"oder anderer Optionen, um das Zeitfenster
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
Mir ist aufgefallen, dass sowohl
die
Antworten von Mark
als
auch von sehe nicht --followdie Dateien enthalten, dh, sie werden angehalten , sobald sie eine Umbenennung der Datei erreichen. Dieses Skript ist viel langsamer, funktioniert aber für diesen Zweck.
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
rolesVerzeichnis für meinen Fall, kann jedoch leicht an Ihren Anwendungsfall angepasst werden.
Dies ist eine Windows-Version
git log --pretty=format: --name-only > allfiles.csv
dann in Excel öffnen
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),"")
Pivot-Tabelle erstellen
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
Alte Frage, aber ich denke immer noch eine sehr nützliche Frage. Hier ist ein Arbeitsbeispiel in Straight Powershell. Dadurch erhalten Sie die 10 am häufigsten geänderten Dateien in Ihrem Repo in Bezug auf den Zweig, in dem Sie sich befinden.
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
Wir können auch herausfinden, welche Dateien zwischen zwei Commits oder Zweigen geändert wurden, z
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
Dies ist wahrscheinlich offensichtlich, aber die bereitgestellten Abfragen zeigen alle Dateien an. Vielleicht möchten Sie jedoch nicht wissen, dass Ihre Konfigurations- oder Projektdateien am aktuellsten sind. Ein einfacher Grep isoliert Ihre Codedateien, zum Beispiel:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20