Git의 Tag에 대해 알아보자!

윤학·2023년 11월 9일
0

Git

목록 보기
3/3
post-thumbnail

회사에서 git을 사용하다가 태그를 통해 릴리즈 버전을 관리하고 있어 처음 사용하는 개념이라 간단히 정리하고자 한다.

Tag?

git에서 tag라는 개념은 말그대로 특정 지점에 표시를 해둔다는 것인데, 특정 커밋에 표시를 한다고 생각하면 될 것 같다.

문서에도 대부분이 tag 기능을 사용하여 릴리즈 버전을 표시해둔다고 하니 용도가 분명해 보인다.

릴리즈 버전이란?
v1.1.0과 같이 개발하는 제품의 현재 개발 진행 단계를 나타내며, 추후 변경한 목적에 따라 .으로 구분된 3자리의 숫자를 변경해가며 관리한다.

어떤식으로 변경하는지 간단히 알아보자.( 1.1.0을 .으로 구분하여 3부분으로 나누며 앞에서부터 설명한다. )

  • major: 기존 버전의 Api와 호환되지 않는 정도의 변경이 일어나면 해당 부분의 버전을 올린다. -> v2.1.0
  • minor: 특정 기능이 추가되거나 수정되었을 경우 해당 부분의 버전을 올린다. -> v1.2.0
  • patch: 버그 수정이나 오류를 수정했을 경우 해당 부분의 버전을 올린다. v1.1.1

유형

태그를 생성하기 전에 먼저 git에서 지원하는 2가지의 태그 유형을 살펴보자.

Lightweight Tag

경량 태그는 특정 커밋에 대한 포인터 역할을 한다.

다음에 살펴볼 유형과 다르게 태그에 어떠한 정보도 남기지 않기 때문에 임시로 태그를 지정할 경우 사용할 수 있다.

Annotated Tag

주석이 달린 태그라고도 하는 이 유형으로 태그를 지정한 경우 git의 데이터베이스에 체크섬이 적용되어 저장이 되고, 태거 이름, 이메일, 날짜, 메시지가 같이 포함된다.

태그를 지정할 경우 여러 정보를 얻을 수 있기 때문에 해당 유형으로 태그를 만드는 것을 권장하고 있으니 그렇게 해야겠다.

그럼 한번 만들어보자.

생성

2가지의 태그 유형에 대해 모두 만들어보고 차이점을 봐보자.

Lightweight Tag

경량 태그는 다른 옵션없이 git tag <tagname>으로 만들 수 있다.

그러고선 git tag 명령어를 통해 태그 목록을 확인해보자.

-l 옵션으로 검색이나 정규표현식을 활용하여 git tag -l "light*"로도 확인할 수 있다.

태그가 잘 생성된 것을 확인할 수 있다.

Annotated Tag

이번에는 주석이 달린 태그를 설정해보자.

위에 봤던 git tag 명령어에 -a 옵션을 통해 해당 유형을 지정할 수 있고 -m 옵션을 통해 해당 태그의 메시지를 지정할 수 있다.

만들고 한번 확인을 해보면

잘 생성된 것을 볼 수 있다!

둘의 차이점을 git show를 통해 보면

확실히 경량 태그는 그냥 커밋만 보여주는 반면에 주석이 달린 태그는 누가 태그를 걸었는지의 정보도 나와 더 좋은 것 같다.

까먹고 태그를 못 달고 지나간 커밋은 어떻게 할까?

이런 경우 해당 지나간 커밋의 체크섬을 통해 태그를 설정할 수 있다.

이렇게 커밋 내역이 있을 때 마지막 modify(exception)~ 커밋에 대해 태그를 지정해보자.

아까와 비슷하게 git tag -a tag-to-pass-commit 22d985da -m "지나간 커밋에 대한 태그"라고 달면

태그가 잘 적용된 것을 볼 수 있다.

이렇게 로컬에서 작업한 내용이 깃허브에 바로 반영이 될까?

별도의 작업을 해주지 않으면 반영이 되지 않기에 바로 원격 저장소에 반영해보자.

원격 저장소 반영

반영하는 방법도 간단하게 git push origin <tagname> 또는 만든 태그를 한번에 푸시하기 위해서는 git push origin --tags를 수행하면 된다.

만약 작업을 하다 이전 버전에 버그가 있다면 해당 태그로 돌아가 수정을 하면 될 것 같다.

참고

2.6 Git Basics - Tagging

profile
해결한 문제는 그때 기록하자

0개의 댓글