git에서 두 커밋 사이에 변경된 줄 수를 어떻게 계산할 수 있습니까?
git에서 두 커밋 사이에 변경된 줄 수를 계산하는 쉬운 방법이 있습니까? 나는 내가 할 git diff
수 있고 줄을 세는 것을 알고 있지만 이것은 지루한 것처럼 보입니다. 또한 줄 수에 내 자신의 커밋 만 포함하여 어떻게 할 수 있는지 알고 싶습니다.
의 --stat
옵션을 원 git diff
하거나 스크립트에서 이것을 구문 분석 하려는 경우 옵션을 원합니다 --numstat
.
git diff --stat <commit-ish> <commit-ish>
--stat
병합 후 보던 사람이 읽을 수있는 출력을 생성합니다. --numstat
스크립트가 쉽게 해석 할 수있는 멋진 테이블 레이아웃을 생성합니다.
나는 당신이 동시에 여러 커밋에 대해 이것을 찾고 있다는 것을 어떻게 든 놓쳤습니다 git log
. Ron DeVera는 이에 대해 언급하지만 실제로 그가 언급 한 것보다 훨씬 더 많은 일을 할 수 있습니다. git log
요청 된 정보를 인쇄하기 위해 내부적으로 diff 기계를 호출하기 때문에 diff stat 옵션뿐만 아니라 모든 diff stat 옵션을 제공 할 수 있습니다 --shortstat
. 사용하고 싶은 것은 다음과 같습니다.
git log --author="Your name" --stat <commit1>..<commit2>
하지만 --numstat
또는 사용할 수 있습니다 --shortstat
. git log
다른 다양한 방법으로 커밋을 선택할 수도 있습니다 . 설명서를 참조하십시오 . 당신은 같은 일에 관심이있을 수 있습니다 --since
(오히려 범위를 커밋 지정하는 대신, 지난 주 이후 커밋 선택) 및 --no-merges
(병합 커밋이 실제로 변화를 도입하지 않음)뿐만 아니라 예쁜 출력 옵션 ( --pretty=oneline, short, medium, full...
).
다음은 git 로그에서 커밋 별 변경 사항 대신 전체 변경 사항을 가져 오는 한 줄입니다 (원하는대로 커밋 선택 옵션을 변경합니다. 이것은 commit1에서 commit2로 커밋합니다).
git log --numstat --pretty="%H" --author="Your Name" commit1..commit2 | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}'
(당신은 git log가 커밋에 대한 식별 정보를 출력하도록해야합니다. 나는 임의로 해시를 선택한 다음 awk를 사용하여 통계 정보가있는 세 개의 필드가있는 행만 선택했습니다)
게으른 경우 git log --stat
.
git diff --shortstat
변경 및 추가 된 행 수만 제공합니다. 이것은 비 단계적 변경에만 적용됩니다. 브랜치와 비교하려면 :
git diff --shortstat some-branch
git diff --stat commit1 commit2
편집 : 커밋도 지정해야합니다 (매개 변수없이 작업 디렉터리와 인덱스를 비교합니다). 예
git diff --stat HEAD^ HEAD
의 부모 HEAD
를 HEAD
.
abcd123 (첫 번째 커밋)과 wxyz789 (마지막 커밋) 사이의 모든 커밋을 비교한다고 가정합니다.
git log wxyz789^..abcd123 --oneline --shortstat --author="Mike Surname"
이것은 다음과 같은 간결한 출력을 제공합니다.
abcd123 Made things better
3 files changed, 14 insertions(+), 159 deletions(-)
wxyz789 Made things more betterer
26 files changed, 53 insertions(+), 58 deletions(-)
지정된 기간 동안 모든 변경 로그를 가져 오는 또 다른 방법
git log --author="Tri Nguyen" --oneline --shortstat --before="2017-03-20" --after="2017-03-10"
산출:
2637cc736 Revert changed code
1 file changed, 5 insertions(+), 5 deletions(-)
ba8d29402 Fix review
2 files changed, 4 insertions(+), 11 deletions(-)
긴 출력 내용으로 더 읽기 쉽게 파일로 내보낼 수 있습니다.
git log --author="Tri Nguyen" --oneline --shortstat --before="2017-03-20" --after="2017-03-10" > /mnt/MyChangeLog.txt
git log --numstat는 숫자 만 제공합니다.
위의 모든 답변이 정확하지만 마지막 많은 커밋 횟수가 필요한 경우 아래 답변을 사용하는 것이 편리합니다.
하나 아래는 마지막 5 개의 커밋 수를 얻는 것입니다.
git diff $(git log -5 --pretty=format:"%h" | tail -1) --shortstat
마지막 10 개의 커밋 수를 얻으려면
git diff $(git log -10 --pretty=format:"%h" | tail -1) --shortstat
일반-필요한 마지막 커밋 수로 N 변경
git diff $(git log -N --pretty=format:"%h" | tail -1) --shortstat
시작 이후 모든 커밋 수를 얻으려면
git diff $(git log --pretty=format:"%h" | tail -1) --shortstat
'Development Tip' 카테고리의 다른 글
파이썬`x가 None이 아니면`아니면`x가 None`이 아니면? (0) | 2020.09.30 |
---|---|
소수점 범위 () 단계 값을 사용하는 방법은 무엇입니까? (0) | 2020.09.30 |
다른 git 저장소에서 커밋을 체리로 선택할 수 있습니까? (0) | 2020.09.30 |
Android getResources (). getDrawable () 지원 중단 API 22 (0) | 2020.09.30 |
스레드 코드를 단위 테스트하려면 어떻게해야합니까? (0) | 2020.09.30 |