커밋이 포함 된 모든 태그를 나열하는 방법은 무엇입니까?


227

이 질문은 git의 특정 커밋을 가리키는 모든 태그를 나열하는 방법 과 비슷 하지만 한 가지 차이점이 있습니다. 태그에 표시된 파일이 아니라 각 태그의 트리 내에 특정 커밋이 포함 된 모든 태그를 검색하고 싶습니다 자체 (이 경우 Makefile 변경 사항에만 태그가 지정됨)


1
특정 파일에 태그를 지정할 수 없습니다. 태그는 커밋 만 가리 킵니다. 실제로 해결하려는 문제에 대한 자세한 내용으로 질문을 편집 할 수 있습니다.
Mark Longair


참고 : Windows에서, 당신이 원하는 경우 반드시 자식을 2.0.x (2014)를 사용할 수 있도록 git tag --contains할 수 없습니다 충돌. 아래 내 답변
VonC

답변:


348
git tag --contains <commit>

2
나는 이것을 시도했다. 그러나 태그에 파일이 하나만 있으면 해당 파일을 통해서만 검색한다고 생각합니다. 트리를 검색하지 않습니다. 또한, 내가 시도한 저장소는 너무 큰 깃들 여서 SIGKILL을 받았습니다.
atx

21
태그에 파일이 없습니다. 그들은 단지 커밋에 대한 마커입니다. 그 점을 감안할 때, 귀하의 이의가 의미가 없다고 생각합니다.
amalloy

이 경우 메모리 부족으로 인해 커밋을 표시해서는 안됩니다. 내가 어떻게 극복 할 수 있는지 아십니까?
atx

5
원격 태그에 대해이를 수행 할 수있는 방법이 있습니까? git branch -r --contains <commit>
Mike

23

리포지토리 가 큰 경우 특정 커밋에 대한 모든 태그를 나열하려면 git 2.0.x (Q3 2014)가 필요합니다.

참조 cbc60b6 커밋 에 의해 (장 자크 Lafay lanfeust69) :

git tag --contains: 스택 오버플로 방지

큰 repos에서 재귀 구현은 contains(commit, commit_list)스택 오버플로를 초래할 수 있습니다. 재귀를 루프로 교체하여 수정하십시오.

이 문제는 스택이 기본적으로 더 제한되는 Linux보다 Windows에서 더 분명합니다.

msysGit 목록에서이 스레드를 참조하십시오 .


9
말장난이 없습니까? ;-)
MikeSchinkel

3
@MikeSchinkel 글쎄 ... 적어도 의도적 인 것은 아닙니다 .
VonC

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.