UFO ET IT

"git describe"는 태그를 무시합니다.

ufoet 2021. 1. 14. 07:50
반응형

"git describe"는 태그를 무시합니다.


다음 줄에서 :

$ git tag -n1
v1.8        Tagged the day before yesterday
v1.9        Tagged yesterday
v2.0        Tagged today
$ git describe
v1.9-500-ga6a8c67
$ 

누구든지 v2.0 태그가 "git describe"에서 사용되지 않는 이유와이를 수정하는 방법을 설명 할 수 있습니까? v2.0 태그는 이미 푸시되었으므로 삭제하고 다시 추가 할 수는 없을 것 같습니다.


git describe기본적으로 주석이 달린 태그 만 사용합니다. --tags경량 태그도 사용하도록 옵션 지정

올바른 커밋 ( git rev-parse HEAD)을 확인했는지 확인하십시오 . 주석이 달린 태그는 git tag -a. 당신이 경우에 git show <tagname>당신은 만 커밋을 참조, 그것은 당신이 additionial 태그 메시지가 표시의 경우에 주석 태그의, 경량 태그입니다.


이것이 우리에게 일어 났을 때, 동일한 커밋에 두 개의 태그가 적용된 경우였습니다. 다음을 실행하여이 경우인지 확인할 수 있습니다.

# git log --oneline --decorate=short
deba4b4 (tag: v1.1.0.20.0, tag: v1.1.0.19.0) 001 New buildnumber

여기에는 버전 19에 대한 태그와 20에 대한 태그가 있습니다. 20은 19 이후에 태그되었지만 동일한 커밋에 대해 태그되었습니다. 이 경우 반환 된 설명

# git describe --tags
v1.1.0.19.0

왜 이렇게했는지는 모르겠지만 중복 태그로 작동하는 것처럼 보입니다.

이것이 발생할 수있는 또 다른 경우는 브랜치에서 "가까운"태그가있는 경우입니다. 이 사례는 이 블로그 게시물 에서 설명했습니다 .


이 문제는 모든 브랜치의 모든 태그를 git tag표시 하고 현재 브랜치 에서 사용할 수있는 커밋에만 태그를 사용한다는 것 입니다.git describe

다음은 예입니다 (실제로 여기에 온 이유).

 $ git tag | tail -n3
v0.4.0
v0.4.1
v0.4.2

사용 가능한 최신 태그가 표시 v0.4.2되지만 이것은 내 출력입니다 git describe.

 $ git describe --tags
v0.4.0-2-acd334c

저는 개발 지점에 있습니다. 로그를 살펴보면 실제로 현재 브랜치에서 최신 태그를 사용할 수 없음을 알 수 있습니다.

 $ git log --oneline --decorate=short | grep '\(tag\:' | head -n3
acd334c (tag: v0.4.0) Merge pull request #1061
988fe5e (tag: v0.3.6) Merge pull request #859
5f97274 (tag: v0.3.5) Merge pull request #646

그래서 제 경우에는 개발자들이 릴리스 에 태그 지정을위한 릴리스 브랜치 를 만들기로 결정했습니다 . 그 결과 개발 브랜치가 더 이상 태그로 최신 상태가 아닙니다.

그것이 도움이되기를 바라며 로그를 확인하는 아이디어에 대해 @eis에게 감사드립니다.

참조 URL : https://stackoverflow.com/questions/4154485/git-describe-ignores-a-tag

반응형