Git : 태그가 어떤 브랜치에 있는지 확인하는 방법은 무엇입니까?


84

나는 현재 많은 분기가있는 프로젝트로 바쁘고 분기 중 하나에서 수행 된 마지막 변경 사항에 대한 태그가 있습니다. 그러나이 태그가 어느 지점에 있는지 명확하지 않습니다.

태그가 어느 분기에 있는지 확인하는 방법은 무엇입니까?

답변:


118

더 짧게 :

git branch --contains tags/<tag>

(모든 나무 같은 참조에서 작동합니다)


태그가 참조하는 커밋을 찾을 수 있는 경우 :

 git rev-parse --verify tags/<tag>^{commit}
 # or, shorter:
 git rev-parse tags/<tag>~0

그런 다음 해당 커밋을 포함하는 분기 를 찾을 수 있습니다 .

git branch --contains <commit>

으로 주석 아래 user3356885 인출 된 지점에 대해, (리모트 네임 스페이스에 지사)

git branch -a --contains tags/<tag>
git branch -a --contains <commit>

6
내 버전의 Git 1.7.1에서는 간단히 git branch --contains <tag>.
Dan Molding

@ DanMoulding 사실, 나는 그것을 반영하기 위해 대답을 편집했습니다. 처음에는 태그에 첨부 된 커밋을 찾는 데 관심이있었습니다.
VonC 2013

6
이 경우 원격 지점에서 생성 된 태그를 찾아도 결과가 생성되지 않습니다. 즉, 로컬에 존재하지 않는 분기에 대해서는 결과가 생성되지 않습니다. 옵션 -a를 사용해야합니다. git branch -a --contains <tag>. 커밋에서도 동일하게 작동합니다.
user3356885

1
불행히도 이것은 여러 가지를 반환합니다 : * (82dd3f0에서 분리 된 HEAD) master refs / tags / 0.0.1-test-masterBr-> HEAD 정보 나 태그 자체가 아닌 브랜치에 프로그래밍 방식으로 액세스하고 싶습니다
herm

@herm이 경우 시도git branch --no-merge tags/<a-tag>
VonC

30

"git branch --contains"가 아무 작업도 수행하지 않는 경우 원격 및 로컬 브랜치 모두를 포함하는 모든 브랜치를 포함해야합니다.

git branch -a --contains <tag>

git 도움말에서 :

특정 git-branch 작업 : -a, --all 원격 추적 및 로컬 분기 모두 나열


5
git branch --contains tag

나를 위해 아무것도하지 않지만 git gui 에서이 문제에 대한 해결책을 찾았습니다 .

다음과 같이 시작하십시오.

git gui

(우분투에서는 먼저 sudo apt-get install git-gui.

그런 다음 Repository-> Visualize All Branch History 메뉴 항목을 선택했습니다 . 결과 창에서 메뉴 항목 File-> List References를 선택했습니다 .

내 모든 태그 (및 기타 참조)를 나열하는 또 다른 창이 나타납니다. 이것들은 클릭 할 수 있으며 그중 하나를 클릭 한 후 왼쪽 하단 프레임에서 분기 목록을 확인해야했습니다. 이렇게 :

Parent: somesha (message)
Parent: someothersha (another message)
Child:  anothersha (yet another message)
Branches: branch1, master, remotes/origin/branch2, remotes/upstream/branch1, etc
Follows: v1.1.2
Precedes: v1.1.4

3

태그가 참조하는 커밋을 찾는 것에 대한 @VonC의 의견과 관련하여 다음을 사용하십시오.

git show <tag>

태그는 특정 커밋에 연결되어 있으므로 해당 커밋을 표시하는 데 사용할 수 있습니다. 그러면 전체 커밋 세부 정보가 제공됩니다.


0

태그를 사용하여 참조를 표시합니다. 따라서 개발 브랜치에있을 때이 상태에 태그를 지정합니다. 귀하의 태그는 실제 참조에 있습니다. 따라서이 경우 트리가 표시되는 gitk 또는 다른 도구를 찾을 수 있습니다 . 여기에서 태그가 어떤 참조인지 확인할 수 있습니다.

git : 분기 별 태그와 같은 것이 있습니까?
http://git-scm.com/book/en/Git-Basics-Tagging

여기에 좋은 설명이 있습니다.


0

태그는 항상 커밋 번호를 참조합니다. 해당 태그 번호를 사용하여 다음을 사용하여 태그가 배치 된 분기를 찾을 수 있습니다.

git for-each-ref | grep ${commit_num} | grep origin | sed "s/.*\///"

0

당신은 또한 이것을 시도 할 수 있으며 비슷한 사용 사례가 있었고 이것은 나를 위해 일했습니다.

git ls-remote --heads origin | grep $CI_COMMIT_SHORT_SHA  | sed "s/.*\///"

약간 다르지만 @ttfreeman의 답변에서 영감을 얻었습니다.


-1

git reflog --date = local | grep feature_xxx


3
나는 이것이 도움이되거나 전혀 효과가 있는지 의심합니다. 저를 설득하기 위해 이것이 어떻게 작동하고 왜 도움이되어야하는지에 대한 설명을 추가하십시오.
Yunnosch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.