Git에서 어떤 커밋을 가리키는 지 어떻게 알 수 있습니까? 정보 내가 실제로 원하는 것은 태그로 이어지는 역사를

저장소에 주석이 달린 태그가 많이 있으며 태그를 가리키는 커밋을 해결하고 싶습니다. 태그와 커밋 SHA를 나열하는 명령이 있습니까? 태그를 확인하고 HEAD를 보면 너무 힘들 것 같습니다.

최신 정보

내가 실제로 원하는 것은 태그로 이어지는 역사를 보는 것만 git log <tagname>으로 충분하다는 반응을 겪은 후에 깨달았습니다 .

답변으로 표시된 답변은 태그 및 커밋 목록을 얻는 데 유용합니다. 약간의 셸 해커를 사용하면 SHA + 커밋 메시지로 변환 할 수 있다고 확신합니다.



답변

이 작업을 수행하는 한 가지 방법은입니다 git rev-list. 다음은 태그가 가리키는 커밋을 출력합니다.

$ git rev-list -n 1 $TAG

~/.gitconfig많이 사용 하면 별칭으로 추가 할 수 있습니다 .

[alias]
  tagcommit = rev-list -n 1

그런 다음 호출하십시오.

$ git tagcommit $TAG


답변

git show-ref --tags

예를 들어 git show-ref --abbrev=7 --tags다음과 같은 내용이 표시됩니다.

f727215 refs/tags/v2.16.0
56072ac refs/tags/v2.17.0
b670805 refs/tags/v2.17.1
250ed01 refs/tags/v2.17.2


답변

그냥 사용 git show <tag>

그러나 커밋 차이도 덤프합니다. 해당 diff를 생략하려면을 사용하십시오 git log -1 <tag>. (@DolphinDream 및 @demisx 감사합니다!)


답변

내 저장소 git show-ref TAG에서 태그의 해시가 아닌 커밋의 해시가 아닌 태그의 해시를 보여줍니다.

git show-ref --dereference TAG 또한 커밋이 가리키는 것을 보여줍니다.


답변

에서 이고르 Zevaka :

요약

거의 똑같이 수용 가능하지만 다른 답변은 약 4 가지이므로 태그를 스키닝하는 모든 다른 방법을 요약합니다.

  1. git rev-list -1 $TAG( 답변 ). git rev-list출력까지 이어질 커밋 $TAG유사하기 git log만 커밋의 SHA1을 도시. 이 -1(가)이를 가리키는 커밋에 출력을 제한합니다.

  2. git show-ref --tags( answer )는 모든 태그 (로컬 및 원격에서 가져온) 및 해당 SHA1을 표시합니다.

  3. git show-ref $TAG( answer )은 SHA1과 함께 태그 및 경로를 표시합니다.

  4. git rev-parse $TAG( answer )는 주석이없는 태그의 SHA1을 표시합니다.

  5. git rev-parse --verify $TAG^{commit}( answer )는 주석이 달린 태그와 주석이없는 태그의 SHA1을 표시합니다. Windows에서는 git rev-parse --verify %TAG%^^^^{commit}(모자 4 개)를 사용하십시오.

  6. cat .git/refs/tags/*또는 태그가 로컬인지 또는 원격에서 가져 왔는지 여부에 따라 cat .git/packed-refs( answer ).


답변

사용하다

git rev-parse --verify <tag>^{commit}

주석이 달린 태그의 경우에도 커밋의 SHA-1을 반환합니다.


git show-ref <tag><tag>주석을 달지 않으면 작동합니다 . 그리고 항상 있습니다 git for-each-ref(자세한 내용은 설명서를 참조하십시오).


답변

이건 어때요:

git log -1 $TAGNAME

또는

git log -1 origin/$TAGNAME