git에서 전체 태그와 함께 모든 태그를 나열하는 방법은 무엇입니까?


359

git이 전체 주석 또는 커밋 메시지와 함께 모든 태그를 나열하고 싶습니다. 이와 같은 것이 가깝습니다.

git tag -n5

이것은 태그 메시지의 처음 5 줄까지만 표시한다는 점을 제외하고는 내가 원하는 것을 정확하게 수행합니다.

나는 매우 큰 숫자를 사용할 수 있다고 생각합니다. 여기서 사용할 수있는 가장 큰 숫자는 무엇입니까? 모든 컴퓨터에서 동일합니까?

업데이트 : 나는 이것에 대해 생각할 시간이 많았으며, 지금은 각 메시지 중 일부가 너무 길면 반드시 모든 메시지를 보여주고 싶지는 않다고 생각합니다. 나는 (메시지 메시지를 포함하여 내가 쓰는 모든 것에 긴 바람을 피우는 내 자신의 성향을 제외하고) 방대한 메시지를보아야 할 특별한 필요성이 실제로 없었습니다. 나는 단지 그것이 나에게 정보를 숨기고있는 것처럼 느끼게했기 때문에 그것이 전체 메시지를 반드시 보여주지는 않을 것이라는 생각을 좋아하지 않았다. 그러나 너무 많은 정보는 나쁜 것일 수도 있습니다.


62
git tag -n나를 위해 그것을했다
Martin Berger

11
git tag -n맨 페이지에 따라 주석의 첫 번째 줄만 인쇄합니다.
Paul 가격

@INTPner, 동의 -l 태그는 특정 패턴의 태그를 나열하는 데 사용됩니다. 답변 수정
Zubair

답변:


348

이것을 시도하면 모든 태그에 대한 주석 및 9 줄의 메시지와 함께 모든 태그가 나열됩니다.

git tag -n9

또한 사용할 수 있습니다

git tag -l -n9

특정 태그가 나열되는 경우 :

git tag -l -n9 v3.*

(예 : 위 명령은 "v3"으로 시작하는 태그 만 표시합니다.)

-l, --list 주어진 패턴과 일치하는 이름을 가진 태그를 나열합니다 (또는 패턴이 제공되지 않은 경우 모두). 인수없이 "git tag"를 실행하면 모든 태그가 나열됩니다. 패턴은 쉘 와일드 카드입니다 (즉, fnmatch (3)을 사용하여 일치). 여러 패턴이 제공 될 수 있습니다. 둘 중 하나라도 일치하면 태그가 표시됩니다.


6
각 주석의 첫 번째 줄만 인쇄합니다.
Paul 가격

3
@Paul Price : 주석 만 있으면 커밋 메시지가 인쇄됩니다. 이 아닌 동의 대답.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

3
문서에 따르면 -l옵션은 패턴을 필터링하는 것입니다. 나는 그것이 어떻게 도움이되는지 모르겠습니다. 뭔가 빠졌습니까?
still_dreaming_1

2
@INTPnerd 네, -l여기에 완전히 불필요한 것입니다
Lambart

1
@ P.MyerNore 이상한 질문의 git을 사용하거나이 인수가 요구하는 것보다 더 많은 것을하기 위해 추가 인수를 전달해야합니다. 그러나 특정 상황에서는 -l이 필요하다는 것을 아는 것이 좋습니다.
still_dreaming_1

119
git tag -n99

짧고 달다. 각 태그 주석 / 커밋 메시지에서 최대 99 개의 행을 나열합니다. 다음은 git tag 공식 문서에 대한 링크 입니다.

이제 태그 당 최대 99 줄만 표시하는 제한이 실제로 대부분 좋은 것으로 생각합니다. 단일 태그에 실제로 99 줄 이상이 있다면 나머지는 모두보고 싶지 않습니다. 줄을 하시겠습니까? 태그 당 99 개가 넘는 줄을 보려면 항상이 줄을 더 크게 늘릴 수 있습니다.

난 거대한 태그 메시지를보고 싶은 특정 상황이나 이유가 될 수도 있겠죠,하지만 점에서 의미 당신이 하지 전체 메시지를보고 싶어? 999 줄 이상일 때? 10,000? 1,000,000? 제 요점은 일반적으로 몇 줄을 볼 것인지에 대한 상한선을 갖는 것이 합리적이며이 숫자를 사용하면 설정할 수 있습니다.

태그를 볼 때 일반적으로보고 싶은 것에 대해 논쟁하고 있기 때문에 아마도 아래의 Iulian Onofrei의 의견에서 이와 같이 별명으로 설정하는 것이 좋습니다.

git config --global alias.tags 'tag -n99'

내 말은, 당신이 git tag -n99태그를보고 싶을 때마다 타이핑을 하고 싶지는 않습니까? 해당 별칭이 구성되면 태그를 볼 때마다 git tags터미널에 입력 하면됩니다. 개인적으로, 나는 이것보다 한 걸음 더 나아가서 내가 일반적으로 사용하는 모든 명령에 대해 더 축약 된 bash 별칭을 만드는 것을 선호합니다. 이를 위해 .bashrc 파일에 다음과 같은 것을 추가 할 수 있습니다 (Linux 및 유사한 환경에서 작동).

alias gtag='git tag -n99'

그런 다음 태그를 볼 때마다을 입력하면됩니다 gtag. 별칭 경로 (git aliases 또는 bash aliases 또는 기타)를 내려갈 때의 또 다른 이점은 이제 개인적으로 자신의 방식에 대한 추가 사용자 정의를 추가하고 일반적으로 태그를 표시하려는 경우가 있습니다 (정렬과 같은) 아래의 내 의견과 같은 특정 방식으로). 첫 번째 별칭을 만드는 데 따르는 어려움을 극복하고 나면 다음과 같은 사용자 정의 방식으로 작업하고 싶은 다른 작업을 위해 더 많은 별칭을 만드는 것이 얼마나 쉬운 지 알 수 git log있지만 다른 질문 / 응답을 위해 저장하십시오 .


3
git config --global alias.tags 'tag -n99'
Iulian Onofrei

@IulianOnofrei, git은 별칭을 정의 할 수 있다는 것을 몰랐습니다. 나는 이것이 주제가 아닌 것을 알고 있지만 저항 할 수는 없다. 이것은 내가 지금 사용하고있는 것입니다 (.bashrc 또는 이와 비슷한 alias gtag='git for-each-ref --format="%(refname:short) %(taggerdate) %(subject) %(body)" refs/tags | sort -V'
곳에 위치

25

Mark Longair의 답변 (사용 git show)은 질문에서 원하는 것과 비슷합니다. 그러나 태그에 지정된 커밋과 해당 커밋에 대한 전체 패치도 포함됩니다. 커밋은 태그와 관련이 없을 수 있기 때문에 (태그가 캡처하려고하는 커밋은 하나뿐이므로) 이는 바람직하지 않습니다. 나는 다음이 조금 더 좋다고 믿는다.

for t in `git tag -l`; do git cat-file -p `git rev-parse $t`; done

Mark의 git show에서 내 사용법에 대한 패치를 표시하지 않았습니다. 그의 명령은 -p 또는 --patch를 생략하지만 diff를 완전히 건너 뛰려면 --no-patch를 사용할 수 있습니다. (git v2.7.1 / mac에서)
AnneTheAgile

13

꽤 멀지는 않지만 다음과 같은 스크립트 또는 별칭을 만들 수 있습니다.

for c in $(git for-each-ref refs/tags/ --format='%(refname)'); do echo $c; git show --quiet "$c"; echo; done

로 대체하지 않는 이유 git for-each-ref refs/tags/ --format='%(refname)'git tag -l있습니까?
Shai Berger

@ShaiBerger : 실제로는 그렇게 생각하지 않습니다. 나는 단지 git tag도자기이고 git for-each-ref배관 이라고 생각하고 있기 때문에 후자의 출력은 스크립팅에 더 안정적이어야합니다.
Mark Longair

10

마지막 태그 메시지 만 :

git cat-file -p $(git rev-parse $(git tag -l | tail -n1)) | tail -n +6

2
Google에서이 문제가 발생하는 다른 사람 : 특정 태그의 메시지를 표시하려는 경우 : git cat-file -p <tag> | tail -n +6
Kit Peters


2

커맨드 라인에서이 작업을 선호하지만 웹 인터페이스가 마음에 들지 않고 GitHub를 사용 https://github.com/user/repo/tags하는 경우 각 태그 옆에있는 "..."를 방문 하여 주석을 표시 할 수 있습니다.

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