개념 공부/기타

[git, github] git tag

clean01 2025. 5. 1. 16:45

git tag를 쓰는 이유

git에서 태그란 특정 커밋에 무언가 표시를 해두기 위한 기능이다.

  • 버전 관리에서의 가독성 향상: 작업을 할수록 많은 커밋들이 쌓이게 되는데, 그 커밋들 중에서 중요한 것들만 태그해서 나중에 찾기 쉽게 할 수 있다.
  • 소프트웨어 버전의 릴리즈: git tag 명령어를 이용해서 소프트웨어의 새로운 버전을 릴리즈할 때 사용할 수 있다.

 


tag 조회

 

git tag

태그를 조회하는 명령어이다.
이 명령어로 로컬 저장소의 모든 태그를 조회할 수 있다.
git tag 명령어는 태그들을 문자 순서대로 정렬해서 보여주기 때문에 형식을 잘 따른다면 가장 오래된 버전이 가장 먼저 출력되며 가장 최근 버전이 가장 아랫줄에 출력된다.

-l, --list 옵션등을 사용해서 조건에 맞는 태그를 검색할 수도 있다.

예를 들어 아래와 같이 검색한다면, 이름에 'v1.2'로 시작하는 태그들만 볼 수 있다.

git tag -l 'v1.2*'

 

git ls-remote --tags

원격 저장소에 있는 태그들을 조회하는 명령어

 

git show

git show 명령어로 태그의 상세 내용(커밋 번호, 커밋 메시지 타이틀과 바디, 변경 사항 diff)을 볼 수 있다.

git show [태그이름]

 

 

 

 

 


tag 생성

 

태그의 종류

 

git tag에는 2가지 종류가 있다.

  • Lightweight:
    • 특정 커밋을 포인터처럼 가리키는 역할을 한다. 즉, 커밋 번호가 곧 태그이다.
    • 태그 이름만을 남긴다.
  • Annotated:
    • 만든 사람, 이메일, 날짜, 메시지를 객체로 따로 저장한다.
    • lightweight 태그와는 달리 고유의 저장 공간이 생긴다.
    • 태그 번호와 커밋 번호가 나뉘어져 있다.

Lightweight 태그는 누가 남긴 태그인지 정보를 파악할 수 없다. 따라서 임시 태그 생성으로 사용하는 경우가 많다.

 

 

Lightweight 태그 생성하기

# git tag [태그명]
git tag v1.2.4

 

 

Annotated 태그 생성하기

lightweight 태그를 생성할 때는 -a 옵션을 사용한다.
커밋과 마찬가지로 태그를 남길 때에도 메시지를 남겨야하고 -m 옵션을 사용하면 태깅과 동시에 메시지를 남길 수 있다.
-m 옵션을 쓰지 않으면 편집기가 실행된다.

git tag -a v1.2.4

 

 


tag 수정/삭제

 

lightweight tag 수정

git tag [새 태그 이름] [기존 태그 이름]
git tag -d [기존 태그 이름] # 기존 태그 삭제

 

annotated tag 수정

git tag -a [새로운 태그 이름] [이전 태그 이름]^{} -m "새 태그 메시지"

 

태그 삭제

git tag -d [태그이름]

 


원격 저장소 관련 tag 명령어

 

원격 저장소에 태그 push

 

로컬에 tag를 만들면 아래 명령어로 원격에도 반영해주어야한다.

git push origin [태그이름]

 

모든 태그를 함께 푸시하려면 --tags 옵션을 사용한다.

git push origin --tags

 

원격에서 태그 삭제

git push <REMOTE> :refs/tags/[태그이름]
git push <REMOTE> :[태그이름]
git push <REMOTE> -d [태그이름]

 

ex

git push origin :refs/tags/v1.2.4

 

 


Reference

https://inpa.tistory.com/entry/GIT-%E2%9A%A1%EF%B8%8F-%ED%83%9C%EA%B7%B8-%EA%B8%B0%EB%8A%A5-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%95-tag#%ED%83%9C%EA%B7%B8_%EC%88%98%EC%A0%95