Antworten:
Sie können den Befehl git effort
(aus dem git-extras
Paket) 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 effort
hat 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 log
wenn 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 --follow
die 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
roles
Verzeichnis 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