[깃] 깃 태그

태그

태그란 특정 커밋(스냅샷, 포인터)을 가리키는 레퍼런스 정보이다. 태그를 사용하여 특정 커밋에 대해 표시(마킹)를 할 수 있다.

태그는 일반적으로 버전 릴리스(예: v1.0.1)를 표시하기 위해 사용한다. 릴리스명을 태그명으로 사용함으로써 소스 코드 이력의 특정 지점을 캡처할 수 있다. 태그는 이력 비교를 위해서도 사용 가능하다. 각각의 커밋은 커밋 해시를 가지고 있으므로 이 커밋 해시 비교를 통해 특정 시점의 두 커밋 비교가 가능하지만 태그를 사용하면 더 간편하게 비교가 가능하다.

커밋 시 특정 시점에 변화하는 이력을 남길 수 있는 브랜치와 달리 태그는 이력 변화가 없다. 즉, 작업 분기인 브랜치에는 스냅샷(커밋 이력)이 존재하지만 태그에는 존재하지 않는다. 태그는 변하지 않는 브랜치와 같다.

태그는 브랜치처럼 포인터(가리키는 지점)를 최신 커밋으로 이동시키지 않는다. 태그는 단순히 특정 커밋에 대한 포인터이다. 태그에는 태그를 만든 사람의 이름 및 이메일, 태그를 만든 날짜, 그리고 태그 메시지도 지정할 수도 있다.

태그를 사용하여 브랜치의 버전 관리를 수행할 수 있다. 브랜치에 버전 정보를 태그로 추가하고, 특정 작업에 대한 변경 사항을 해당 브랜치에서 지속적으로 반영 및 버저닝한다.


태그의 종류

  • Lightweight 태그: 기본적으로 파일에 커밋 체크섬을 저장한다. 이외 다른 정보는 저장하지 않는다.
    • Lightweight 태그 생성 시 이름만 지정하며 -a, -s, -m 옵션을 사용하지 않는다.
  • Annotated 태그: 태그의 이름 지정 외에 태그를 만든 사람의 이름 및 이메일, 태그를 만든 날짜, 태그 메시지를 지정한다. -a, -s, -m 옵션을 사용한다.


태그 생성

  • Lightweight 태그
    git tag -a 태그명
    
  • Annotated 태그
    git tag -a 태그명 -m "태그메시지"
    
    • -a: Annotated 태그를 만들기 위해 사용한다.
    • -m: 태그 저장 시 메시지를 함께 저장한다.
  • 기타 옵션
    • -s: 기본 이메일 주소 키를 사용하여 GPG(GNU Privacy Guard)로 서명할 태그를 만든다.


태그 체크아웃


태그 푸시

git push origin 태그명

git push 명령은 자동으로 원격 저장소에 태그를 전송하지 않는다. 태그를 다른 작업자와 공유하기 위해서는 태그를 별도로 원격 저장소에 푸시하는 과정이 필요하다.


깃 태그의 활용

특정 브랜치에 병합이 발생하는 이벤트가 발생했을 때 빌드 작업을 동작시킴으로써(트리거) 소스 코드의 빌드 및 배포 작업을 수행할 수 있다.

브랜치는 소스 코드의 작업 분기를 위해 사용하므로 브랜치의 이름은 특정 작업 또는 기능에 따라 정해진다. 따라서 브랜치명으로 작업의 버전 관리는 어렵다. 브랜치명으로 빌드 및 배포를 수행하기 위해서는

태그는 주로 작업의 릴리스 버저닝을 위해 사용한다. 태그를 사용하면 버저닝 정보를 빌드 및 배포 파이프라인에 사용할 수 있다.

브랜치 푸시를 작업의 트리거로 사용하는 대신 태그 푸시를 트리거로 사용하면


참고

Comments