Odpowiedzi:
możesz użyć polecenia git effort(z git-extraspakietu), które pokazuje statystyki dotyczące liczby zatwierdzeń na plik (według zatwierdzeń i aktywnych dni).
EDYCJA: wysiłek git to tylko skrypt bash, który możesz znaleźć tutaj i dostosować do swoich potrzeb, jeśli potrzebujesz czegoś bardziej specjalnego.
git help effortnie ma o tym żadnych informacji: /). Zakładam, że pierwszy zestaw wyników jest uporządkowany według nazwy pliku, a drugi według liczby zatwierdzeń na plik. Strona podręcznika zawiera również wzmiankę o github.com/tj/git-extras/issues, aby zgłosić problemy
Możesz zrobić coś takiego:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
Dziennik wyświetla tylko nazwy plików, które zostały zmienione w każdym zatwierdzeniu, podczas gdy reszta po prostu sortuje i wyświetla 10 najczęściej pojawiających się nazw plików.
--branchesdo, git logjeśli chcesz dołączyć zatwierdzenia do dowolnego z lokalnych oddziałów.
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
Zauważyłem, że zarówno
Mark
i
sehe w
odpowiedzi do not --followplików, to znaczy oni zatrzymać po osiągnięciu zmienić nazwy pliku. Ten skrypt będzie znacznie wolniejszy, ale będzie działał w tym celu.
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
roleskatalogu dla mojego przypadku, ale można go łatwo zmodyfikować, aby pasował do twojego przypadku użycia.
To jest wersja systemu Windows
git log --pretty=format: --name-only > allfiles.csv
następnie otwórz w programie 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),"")
utwórz tabelę przestawną
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
Stare pytanie, ale myślę, że nadal jest bardzo przydatne. Oto działający przykład w prostym programie PowerShell. Spowoduje to wyświetlenie 10 najczęściej zmienianych plików w repozytorium w odniesieniu do gałęzi, w której się znajdujesz.
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
Możemy też dowiedzieć się, jakie pliki zmieniły się między dwoma zatwierdzeniami lub gałęziami, np
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
Jest to prawdopodobnie oczywiste, ale podane zapytania pokażą wszystkie pliki, ale być może nie chcesz wiedzieć, że pliki konfiguracji lub projektu są najbardziej aktualne. Prosty grep izoluje pliki z kodem, na przykład:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20