programing

Git에서 가장 많이 변경된 파일 찾기

cafebook 2023. 8. 21. 21:35
반응형

Git에서 가장 많이 변경된 파일 찾기

Git에서 가장 자주 변경되는 파일을 표시하려면 어떻게 해야 합니까?

다음과 같은 작업을 수행할 수 있습니다.

git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10

로그는 각 커밋에서 변경된 파일 이름만 출력하고 나머지는 가장 자주 나타나는 상위 10개 파일 이름만 정렬하여 출력합니다.

사용할 수 있습니다.git effort(부터)git-extraspackage) 명령 - 파일당 커밋 수(커밋 및 활성일 기준)에 대한 통계를 표시합니다.

편집: git effort는 여기에서 찾을 수 있는 간단한 스크립트이며 더 특별한 것이 필요할 때 필요에 따라 조정할 수 있습니다.

저는 마크와 시히의 대답이 모두 그렇지 않다는 것을 알아차렸습니다.--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

오래된 질문입니다만, 저는 여전히 매우 유용한 질문이라고 생각합니다.다음은 스트레이트 파워셸의 작동 예입니다.이렇게 하면 현재 위치에 있는 지점과 관련하여 가장 많이 변경된 파일 상위 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

이 버전은 Windows 버전입니다.

git log --pretty=format: --name-only  > allfiles.csv

그리고 엑셀로 엽니다.

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

보다 유연한 필터를 가진 간단한 노드 도구는 git-heatmap입니다. 실행git-heatmap프로젝트의 폴더에서 마지막 1000개의 커밋을 반복하고 가장 많이 변경된 파일의 열 지도를 생성합니다.확인할 수 있습니다.git-heatmap -h더 많은 필터를 위해.

enter image description here

파워셸의 경우, Gitbash가 설치되어 있다고 가정합니다.

git log --pretty=format: --name-only | sort | uniq -c | sort -Descending | select -First 10
git whatchanged --all | \grep "\.\.\." | cut -d' ' -f5- | cut -f2- | sort | uniq -c | sort

파일 추가만 보려는 경우--author로.git whatchanged --author=name --all.

예를 들어 두 커밋 또는 분기 간에 변경된 파일을 확인할 수도 있습니다.

git log  --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50 

이는 분명하지만 제공된 쿼리에 모든 파일이 표시되지만 구성 또는 프로젝트 파일이 가장 많이 업데이트되었는지 여부에 관심이 없을 수도 있습니다.간단한 grep는 코드 파일로 분리됩니다. 예:

git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20

언급URL : https://stackoverflow.com/questions/7686582/finding-most-changed-files-in-git

반응형