git 저장소의 줄 수
git 저장소의 모든 파일에 있는 총 줄 수를 어떻게 셀 수 있습니까?
git ls-files
에는 git 있습니다.
를 cat
일 something . ?
git ls-files | [cat all these files] | wc -l
xargs
cat
로 묶은 후 달 all all all all all all all all all all all all all all all all all all all all all all all all all all all 。wc
다음 중 하나:
git ls-files | xargs cat | wc -l
cat
자세한 내용은 다음과 같습니다.
git ls-files | xargs wc -l
프로젝트의 범위를 파악하려면 언어별로 중요한 코드 줄과 중요하지 않은 코드 줄을 구분하는 CLOC(Count Lines of Code) 출력을 선호할 수 있습니다.
cloc $(git ls-files)
은 (이 행은)에 합니다.git ls-files | xargs cloc
를 사용합니다.sh
의 명령어 치환 기능).
샘플 출력:
20 text files.
20 unique files.
6 files ignored.
http://cloc.sourceforge.net v 1.62 T=0.22 s (62.5 files/s, 2771.2 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Javascript 2 13 111 309
JSON 3 0 0 58
HTML 2 7 12 50
Handlebars 2 0 0 37
CoffeeScript 4 1 4 12
SASS 1 1 1 5
-------------------------------------------------------------------------------
SUM: 14 22 128 471
-------------------------------------------------------------------------------
먼저 CLOC를 설치해야 합니다.패키지 매니저와 함께 설치할 수 있습니다.예를 들어 다음과 같습니다.brew install cloc
홈브루와 함께.
cloc $(git ls-files)
보다 것을 말합니다.cloc .
예에서는 「」가 사용되고 있습니다git ls-files
471번입니다.【은젝프프에 for】cloc .
는 Git 456, 행(의를 검색하기 456,에는 6분 소요)을합니다.Git 무시로 인한 의존관계를 검색하기 때문입니다.node_modules
더입니니다다
git diff --stat 4b825dc642cb6eb9a060e54bf8d69288fbee4904
빈 트리와 현재 작업 트리의 차이점이 표시됩니다.현재 작업 중인 트리의 모든 행이 계산됩니다.
현재 작업 트리의 번호를 얻으려면 다음 절차를 수행합니다.
git diff --shortstat `git hash-object -t tree /dev/null`
해서 '어느 정도 하다'와 같은 .1770 files changed, 166776 insertions(+)
.
에서 배치 문제가 발생했습니다.git ls-files | xargs wc -l
, 행의 「파일로 됩니다.total
lines.discloss.disclos
질문에서 힌트를 얻어 wc 유틸리티는 왜 "total"로 여러 줄을 생성합니까? 문제를 회피하기 위한 다음 명령을 찾았습니다.
wc -l $(git ls-files)
또는 코드와 같은 일부 파일만 검사하려는 경우:
wc -l $(git ls-files | grep '.*\.cs')
어쨌든 나에게 가장 좋은 해결책은 @ephemiant의 대답에 담겨 있다.눈치채지 못하게 여기에 세워두는 거예요.그 공적은 @FRoZeN(및 @eemient)에게 돌아가야 합니다.
git diff --shortstat `git hash-object -t tree /dev/null`
는 추가 노이즈 없이 repo 작업 디렉토리 내의 파일 및 행의 합계를 반환합니다.보너스로는 소스 코드만 카운트되며 이진 파일은 집계에서 제외됩니다.
위의 명령어는 Linux 및 OS X에서 작동합니다.크로스 플랫폼 버전은 다음과 같습니다.
git diff --shortstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904
그것은 Windows에서도 동작합니다.
기록의 경우 빈 줄을 제외하는 옵션,
-w
/--ignore-all-space
,-b
/--ignore-space-change
,--ignore-blank-lines
,--ignore-space-at-eol
해도 없다--shortstat
공백 행이 카운트됩니다.
이것은 cloc 1.68에서 동작합니다.
cloc --vcs=git
다음을 사용합니다.
git grep ^ | wc -l
에서 regex git이 됩니다.^
이 명령어는 행의 시작을 나타내므로 총 행 수를 나타냅니다.
cmder(http://gooseberrycreative.com/cmder/))를 가지고 놀다가 html, css, script, javascript의 행을 세고 싶었습니다.위의 답변 중 일부는 효과가 있었지만,or
pattern in grep doesn't - 여기(https://unix.stackexchange.com/questions/37313/how-do-i-grep-for-multiple-patterns)에서 이 문제를 회피해야 한다는 것을 알았습니다.
그래서 지금은 이렇게 쓰고 있습니다.
git ls-files | grep "\(.html\|.css\|.js\|.java\)$" | xargs wc -l
나는 이렇게 했다:
git ls-files | xargs file | grep "ASCII" | cut -d : -f 1 | xargs wc -l
저장소의 모든 텍스트 파일을 관심 파일로 간주할 경우 이 기능이 작동합니다.그 중 일부가 문서 등으로 간주될 경우 제외 필터를 추가할 수 있습니다.
시험:
find . -type f -name '*.*' -exec wc -l {} +
문제의 디렉토리에서
특정 작성자로부터 행수를 취득하려면 , 다음의 코드를 사용해 주세요.
git ls-files "*.java" | xargs -I{} git blame {} | grep ${your_name} | wc -l
github https://github.com/flosse/sloc 의 이 툴을 사용하면, 보다 알기 쉬운 방법으로 출력을 표시할 수 있습니다.소스 코드의 통계를 만듭니다.
- 물리선
- 코드 행(소스)
- 코멘트가 달린 행
- 한 줄짜리 코멘트
- 블록 코멘트가 있는 행
- 출처와 코멘트가 뒤섞인 행
- 빈 줄
이진 파일을 포함할지 여부에 따라 두 가지 해결 방법이 있습니다.
git grep --cached -al '' | xargs -P 4 cat | wc -l
git grep --cached -Il '' | xargs -P 4 cat | wc -l
"xargs -P 4"는 4개의 병렬 프로세스를 사용하여 파일을 읽을 수 있음을 의미합니다.이것은 매우 큰 리포지토리를 검색할 때 매우 유용합니다.기계의 용량에 따라 프로세스 수가 증가할 수 있습니다.
a, 바이너리 파일 처리(바이너리 포함)
- " , 행이 파일 (빈 - l " , " " " , " " " ( " " " " " " " )
-I, 바이너리 파일의 패턴과 일치하지 않음(바이너리 제외)
tree (files )--, uncommitted files (커밋되지 않은 파일 포함)--, uncommitted files (커밋되지 않은 파일 포함)
은 Carl Norum의 중 공백이 합니다.IFS
다른 사람들과 함께tab
그리고.newline
해결책은 NULL 바이트로 행을 종단하는 것입니다.
git ls-files -z | xargs -0 cat | wc -l
: | git mktree | git diff --shortstat --stdin
또는 다음 중 하나를 선택합니다.
git ls-tree @ | sed '1i\\' | git mktree --batch | xargs | git diff-tree --shortstat --stdin
공백이 아닌 행의 합계수를 찾으려면 , AWK 를 사용할 수 있습니다.
git ls-files | xargs cat | awk '/\S/{x++} END{print "Total number of non-empty lines:", x}'
공백이 아닌 문자를 포함하는 행을 계산하기 위해 regex를 사용합니다.
언급URL : https://stackoverflow.com/questions/4822471/count-number-of-lines-in-a-git-repository
'programing' 카테고리의 다른 글
파일에 있는 모든 숫자를 빠르게 합산하려면 어떻게 해야 합니까? (0) | 2023.04.16 |
---|---|
Python에서 Excel 파일을 열려면 어떻게 해야 하나요? (0) | 2023.04.16 |
String에서 곱슬곱슬한 대괄호 '{'를 이스케이프합니다.포맷 (0) | 2023.04.16 |
WPF 익스팬더 헤더의 스타일링 방법 (0) | 2023.04.16 |
데이터베이스 및 테이블을 생성하는 SQL 스크립트 생성 (0) | 2023.04.11 |