programing

어떤 깃 태그에 있는지 표시하시겠습니까?

skycolor 2023. 5. 12. 21:57
반응형

어떤 깃 태그에 있는지 표시하시겠습니까?

현재 체크아웃된 태그를 찾는 데 어려움을 겪고 있습니다.

내가 할 때:

git checkout tag1
git branch

제가 어떤 꼬리표를 달고 있는지 알 수가 없어요.로그만 기록됩니다.

* (no branch)
master

어떤 태그가 체크아웃되었는지 알 수 있습니까?위의 예에서, 이것은 다음과 같습니다.tag1.

편집

야쿠브 나롭스키는 기트푸가 더 많습니다.훨씬 간단한 다음 명령은 완벽하게 작동합니다.

git describe --tags

(또는 없이)--tags주석이 달린 태그를 체크아웃한 경우.제 태그는 가볍기 때문에, 저는 그것이 필요합니다.--tags.)

원답

git describe --exact-match --tags $(git log -n1 --pretty='%h')

좀 더 기트푸를 가진 사람은 좀 더 우아한 해결책을 가지고 있을지도 모릅니다...

이는 다음과 같은 사실을 활용합니다.git-log체크아웃한 항목부터 시작하는 로그를 보고합니다. %h축약된 해시를 인쇄합니다.그리고나서git describe --exact-match --tags해당 커밋과 정확히 일치하는 태그(경량 또는 주석이 달린 태그)를 찾습니다.

$()위의 구문은 당신이 bash 또는 유사한 것을 사용한다고 가정합니다.

이것은 나에게 효과가 있었습니다.git describe --tags --abbrev=0

2020년 편집: 아래 댓글 중 일부에서 언급한 것처럼, 이것은 당신에게 효과가 있을 수도 있고 안 될 수도 있으니 조심하세요!

현재 HEAD(또는 커밋)에 있는 모든 태그 표시

git tag --points-at HEAD

git describe도자기 명령입니다. 이 명령은 피해야 합니다.

http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html

대신 다음을 사용했습니다.

git name-rev --tags --name-only $(git rev-parse HEAD)

태그를 체크아웃할 때 "분리 헤드"라고 하는 것이 있습니다.일반적으로 Git의 HEAD 커밋은 현재 체크아웃한 분기에 대한 포인터입니다.그러나 로컬 분기(예: 태그 또는 원격 분기)가 아닌 다른 항목을 체크아웃하는 경우 "분리된 머리"가 있습니다. 실제로 분기에 있는 것은 아닙니다.머리가 분리된 상태에서 커밋을 수행하면 안 됩니다.

편집하기 싫으면 태그를 체크아웃해도 괜찮습니다.파일 내용을 검토하는 중이거나 태그로 프로젝트를 빌드하려는 경우git checkout my_tag커밋을 하지 않는 한 파일 작업을 할 수 있습니다.파일 수정을 시작하려면 다음 태그를 기반으로 분기를 만들어야 합니다.

$ git checkout -b my_tag_branch my_tag

라는 새 분기를 만듭니다.my_tag_branch에서 시작하여my_tag이 분기에서 변경 사항을 적용하는 것이 안전합니다.

git log --decorate

그러면 심판이 현재 체크아웃된 커밋을 가리키는 것이 무엇인지 알 수 있습니다.

여기에 특정 사용 사례 세트를 위한 재미있는 것이 있습니다.저장소에 다음과 같은 버전이 있는 경우v1.0.0,v1.1.0,v1.1.1등, 그리고 다음과 같은 속기 버전도 있습니다.v1그 점은 무엇이든 최근의 것입니다.v1.x.x다음은 최신 버전의 태그와 관련하여 현재 체크아웃된 커밋에 대한 참조를 제공하며, 이 커밋이 작동하지 않을 경우 폴백을 제공합니다.

git describe --tags --exact-match --match "v*.*.*" \
  || git describe --match "v*.*.*" --tags \
  || git describe --tags \
  || git rev-parse HEAD

다음과 같은 커밋이 있다고 가정합니다.

* 4444444 (main, origin/main, tag: v2.0.0, tag: v2.0, tag: v2)
* 3333333
* 2222222 (tag: v1.1.0, tag: v1.1, tag: v1)
* 1111111 (tag: v1.0.0, tag: v1.0)
* 0000000

몇 가지 예제 HEAD에 대한 위 명령의 출력:

  • git checkout main->v2.0.0
  • git checkout 3333333->v1.1.0-1-g3333333
  • git checkout 2222222->v1.1.0
  • git checkout v1->v1.1.0
  • git checkout 0000000->0000000 ref표시됨)

언급URL : https://stackoverflow.com/questions/3404936/show-which-git-tag-you-are-on

반응형