Git Tag란?
Git Tag란 버저닝을 위해 사용하는 포인터이다. HEAD가 특정 커밋 해시를 가리키는 것 같이 Git Tag 또한 특정 커밋 해시를 가리킨다.
*만약 HEAD에 대해 익숙하지 않으면 아래 글을 살펴보자.
이번 글에서는 다음의 순서로 Git Tag에 대해 다룰 것이다.
- Git Tag 만들기
- Git Tag 목록 조회하기
- Git Tag 필터링하기
- Git Tag간 차이 확인하기
- Git Tag로 checkout 하기
Git Tag 만들기
Lightweight Tag 만들기
Lightweight Tag는 간단히 특정 커밋을 가리키는 Tag이다. Lightweight Tag는 git tag [tag name] 명령어로 만들 수 있다. git tag 명령어로 tag를 만들면 현재 HEAD 커밋에 태그가 붙는다.
$ git tag [tag name]
git tag를 만들면 다음과 같이 log에 tag에 관한 정보가 붙는다.
$ git tag v1.0.0
$ git log --oneline
03f38ba (HEAD -> main, tag: v1.0.0) cc
4b2a415 (origin-ssh/main) git page demo
Annotated Tag 만들기
Annotated Tag는 Lightweight Tag에 메타데이타(추가 정보)를 포함한 태그이다. git tag -a [tag name] 을 통해 만들 수 있다.
$ git tag -a [tag name]
만약 위와 같이 명령어를 치면 추가적인 정보를 태그에 입력하라는 편집기가 나타나고 편집 후 종료하면된다.
➜ demo-page git:(main) git tag -a v1.0.1
힌트: 편집기가 파일을 닫기를 기다리는 중입니다...
#
# 다음 태그에 대한 메시지를 쓰십시오:
# v1.0.1
# '#' 문자로 시작하는 줄은 무시됩니다.
version 1.0.1 fix duplicate bug
그러면 git show 명령어를 통해 해당 태그를 확인했을 때 작성한 메세지가 나타나게 된다.
$ git show v1.0.1
tag v1.0.1
Tagger: Seyoung Cho <simplistudiodev@gmail.com>
Date: Mon Jan 10 01:04:57 2022 +0900
version 1.0.1 fix duplicate bug
특정 Commit에 태깅하기
특정 Commit에 태깅 하기 위해서는 git tag [tag name] [commit hash] 명령어를 쓰면 된다.
$ git tag [tag name] [commit hash]
예를 들어 다음과 같이 쓸 수 있다.
$ git tag v1.0.2 6e0ab81
기존 태그 특정 Commit에 으로 바꾸기
기존 Tag 가 포인팅하는 Commit Hash를 바꾸려면 다음 명령어를 쓰면된다.
$ git tag [tag name] [commit hash] -f
예를 들어 다음과 같이 쓸 수 있다.
$ git tag v1.0.2 ae084ef -f
Git Tag 삭제하기
git tag -d [tag name] 명령어를 사용해 Tag를 삭제할 수 있다.
$ git tag -d [tag name]
예를들어 v1.0.1 tag를 삭제하려면 다음과 같이 쓰면 된다.
$ git tag -d v1.0.1
'v1.0.1' 태그 삭제함 (과거 98c4459)
Git Tag 목록 조회하기
git tag 명령어를 이용해 tag 목록을 확인할 수 있다.
$ git tag
Git Tag 필터링하기
git tag -l [pattern] 명령어를 이용해 뒤에 패턴을 만족하는 모든 태그를 출력할 수 있다.
$ git tag -l [pattern]
예를 들어 다음과 같이 출력하면 feature을 접두어로 갖는 모든 태그들이 출력된다.
$ git tag -l "feature*"
만약 feature 을 포함하는 문자열을 검색하려면 다음과 같이 쓰면 된다.
$ git tag -l "*feature*"
Git Tag간 차이 확인하기
git diff 명령어를 사용하면 Tag간 차이를 확인할 수 있다.
$ git diff [tag name1] [tag name2]
Git Tag로 checkout 하기
git checkout [tag name] 명령어를 이용해 tag가 가리키는 커밋을 체크아웃 할 수 있다.
$ git checkout [tag name]
예를 들어 다음과 같이 사용 가능하다.
$ git checkout v1.0.0
Git Tag push 해 Remote 에 태깅하기
개별 Tag 푸시하기
기존 git push를 사용해 Tag를 push 할 수 있다.
git push [alias] [tag name]
예를 들어 다음과 같이 쓸 수 있다.
git push origin v1.0.1
모든 Tag 푸시하기
모든 Tag를 푸시하기 위해서는 다음 명령어를 사용하면 된다.
git push [alias] --tags