2012-05-31 6 views
7

태그가 작성된 이후 커밋 수를 계산하려고합니다.태그가 태그 이후에 커밋됩니다.

나는 git rev-list을 사용해 보았지만, 내가 시도한 것과 관계없이 동일한 결과를 반환하는 것으로 보입니다. 이것은 내가 시도한 것입니다 : 012Start 태그가 생성 된 이후로 얼마나 많은 커밋 수를 계산하려고 시도합니다 :

$ git rev-list 1.7Start^..HEAD | wc -l 
13902 
$ git rev-list HEAD | wc -l 
13902 

나는 현재 master에 있으니 HEAD을 사용하고 있지만 git rev-list master | wc -l을 사용하면 나에게도 같은 결과가 나온다. 1.7

git rev-list master이 날 모든 마스터에 커밋 따라서 단지 나에게 차를 제공해야 1.7Start^..master보다 더 큰 수를 산출 보여해야하기 때문에

이되지 않았습니다 13000+ 범?

+0

저에게 '1.7Start ^'와 'HEAD'에는 공통적 인 역사가 없다는 것을 알려줍니다. 이 경우를 테스트하려면,'git merge-base 1.7Start^HEAD'가 무엇을 생성하는지보십시오. 제 추측은 공통점이 없다는 것을 나타내는 에러입니다. –

+0

오류가없고 반환 값이 없습니다. –

+0

공통점이없는 것으로 나타났습니다. 이는 놀랍습니다. 이 태그는 어떻게 생성 되었습니까? –

답변

4

1.7Start^HEAD 사이에 공통된 기록이 없으므로 1.7StartHEAD에 다른 루트 커밋이 있어야합니다.

상기 코멘트에

는 질문자 저장소가 파괴 마이그레이션 때문에이 발생한 것으로 나타났다 (git rev-list에 전달 구문 a..b 단지.마다 a 않고있는 b 커밋 "을 의미), 및 master은 전적으로 1.7Start 점.

3

망할 놈이 빨리 화장실-1 다음 않는 자식 레브리스트 --count 있습니다.

망할 놈의 레브 - 목록 --use-bitmap-도 있습니다 가져온 지점 구별 index --count의 최적화 인 git 이후 버전에서의 카운트.

rev-list는 현재 분기에 대한 repo의 모든 커밋을 찾기 위해 커밋 (예)이 필요합니다.

git rev-list --count HEAD 
0

전형적인 당신 만의 마지막 태그 신경 경우, git describe 마지막 태그가 얼마나 많은 커밋이 이후 현재 지점에서 만들어진 것을 당신에게 을 말할 것이다. 예를 들어, 아래 출력에서 ​​마지막 태그는 0.1.9이고 현재 분기에서 67 개의 커밋이 만들어진 것입니다.

$ git describe --tags 

0.1.9-67-gff9fd30 

확인을 위해 아래 명령을 사용하여 커밋의 전체 목록을 볼 수 있습니다. 출력을 wc -l으로 파이프하면 동일한 수를 반환해야합니다. !!은 Bash의 이전 명령입니다.

git log --oneline $(git describe --tags --abbrev=0).. 

$ !! | wc -l 

67 
관련 문제