답변:
파일 당 커밋 수 (커밋 및 활성 날짜 별)에 대한 통계를 표시 git effort
하는 ( git-extras
패키지에서) 명령을 사용할 수 있습니다 .
편집 : 자식의 노력은 단지 떠들썩한 파티 스크립트 당신이 여기에서 찾을 수 있습니다 그리고 당신은 더 특별한 무언가가 필요하다면 여러분의 필요에 적응.
git help effort
그것에 대한 정보가 없습니다 : /). 첫 번째 결과 세트는 파일 이름으로 정렬되고 두 번째 결과는 파일 당 커밋 수로 정렬된다고 가정합니다. man 페이지는 또한 문제를보고하기 위해 github.com/tj/git-extras/issues 를 언급 합니다
다음과 같이 할 수 있습니다.
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
로그는 각 커밋에서 변경된 파일의 이름 만 출력하고 나머지는 가장 자주 나타나는 상위 10 개의 파일 이름을 정렬하고 출력합니다.
--branches
됩니다.git log
로컬 브랜치의에 커밋을 포함 할 경우.
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
Mark
와
sehe의
답변이 --follow
파일 이 아니라는 것을 알았습니다. 즉
, 파일 이름이 변경되면 중지됩니다. 이 스크립트는 훨씬 느리지 만 그 목적으로 작동합니다.
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
제 경우 에 대한 디렉토리의 각 폴더별로 변경 사항을 집계 하지만 사용 사례에 맞게 쉽게 수정할 수 있습니다.
이것은 Windows 버전입니다
git log --pretty=format: --name-only > allfiles.csv
그런 다음 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),"")
피벗 테이블 생성
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
오래된 질문이지만 여전히 매우 유용한 질문이라고 생각합니다. 다음은 직선형 powershell의 작동 예입니다. 이것은 당신이 속한 브랜치와 관련하여 당신의 저장소에서 가장 많이 변경된 파일 10 개를 얻을 것입니다.
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
또한 두 개의 커밋 또는 분기간에 변경된 파일을 찾을 수 있습니다.
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50