릴리스의 경우 일반적으로 v1.1.0과 같은 태그를 지정합니다. 빌드 스크립트 중에 현재 git 정보가 포함 된 fwVersion.c 파일을 만들고 있습니다. 현재 파일에 커밋 및 분기 정보가 있지만 태그를 추가하고 싶습니다.
이것이 가능한가?
답변:
에 대한 설명서를 확인하십시오 git describe. 주어진 커밋에 가장 가까운 태그 (즉, 커밋의 조상을 가리키는 태그)를 찾고 태그 측면에서 해당 커밋을 설명합니다.
커밋이 태그로 가리키는 지 여부 만 알고 싶다면 다음 출력을 확인할 수 있습니다.
git describe --exact-match <commit-id>
git describe --all --exact-match `git rev-parse HEAD`
git describe --tags --abbrev=0 REV태그에 정크를 원하지 않을 때 유용합니다.
git describe --all(현재 체크 아웃 된 커밋의 경우) 또는 git describe --all <commit>내가 원했던 거의 모든 것을 항상 수행했습니다.
이건 어때?
git tag --points-at <commit-id>
주어진 커밋에있는 모든 태그를 제공하고 ( git describe단 하나만 제공함) 하위 커밋에 태그를 포함하지 않습니다 git tag --contains.
이 정보는 매뉴얼에서 찾을 수 있습니다.
git tag --contains <commit>
나는 내가 원하는 것을주기 위해 두 가지 상위 답변의 콤보를 찾았습니다.
git describe --tags --exact-match <commit-id>
이렇게하면 해당 커밋과 주석이없는 커밋에만 해당하는 태그가 제공됩니다. 태그를 찾고 싶을 때 유용합니다 (예 : Jenkins의 경우).
예. $ git describe --tags --exact-match head~2
제공합니다 :
$ ReleaseBeta
일부 답변 통합 :
git tag --contains [<ref>]
과
git tag --points-at [<ref>]
아니면 그냥
git tag
동일하게 작동하여 지정된 참조 또는 지정되지 않은 경우 현재 커밋에 대한 모든 태그를 인쇄합니다.
git describe --tags [<ref>]
여기서 <ref>기본값은 현재 커밋이고, 커밋과 연관된 태그가 없으면 128로 종료하고 커밋과 연관된 태그를 인쇄합니다 (패턴이없는 것 같음).
git describe [<ref>]--tags주석이 달린 태그 만 인쇄한다는 점
을 제외하면 with와 동일하게 작동합니다 .
옵션 --contains을 제공하면 describe지정된 커밋의 조상과 관련된 태그가 인쇄됩니다. 예를 들면
$ git init
Initialized empty Git repository in /tmp/test
$ git commit -m one --allow-empty
[master (root-commit) 7fdfff2] one
$ git commit -m two --allow-empty
[master cd5f8f1] two
$ git tag -am foo foo
$ git tag bar
$ git log --format=oneline
cd5f8f1f4f29eb164f83e224768ccaf37fe170ed (HEAD -> master, tag: foo, tag: bar) two
7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1 one
$ git describe 7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1
fatal: No tags can describe '7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1'.
Try --always, or create some tags.
$ git describe --contains 7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1
bar~1
git describe --tags <commit-id>주석이없는 태그 용