개념 공부/기타
[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