Skip to main content

git tag


1. Git 태그란?

  • **Git 태그(Tag)**는 프로젝트의 커밋 히스토리에서 중요한 지점을 영구적으로 표시하는 기능이다.
  • 브랜치와 다르게, 태그는 절대 이동하지 않으며 단순히 커밋을 가리키는 고정 포인터 역할을 한다.
  • 주로 버전 릴리즈, 큰 기능 병합 후, 배포 이력 저장 등에 사용된다.

2. 브랜치와 태그의 차이

항목

브랜치

태그

역할

작업을 이어가는 지점

이정표(마일스톤) 고정 지점

상태

계속 이동함 (새 커밋이 생기면 이동)

고정됨 (절대 이동하지 않음)

커밋 가능 여부

가능

불가능 (태그에서 커밋 시 분리된 HEAD)

대표적 용도

기능 개발, 병합 관리

릴리즈, 버전 마킹


3. 태그 종류

3.1 Lightweight Tag (경량 태그)

  • 단순히 커밋을 가리키는 라벨만 붙임
  • 메타데이터 없음 (작성자, 날짜, 메시지 등 기록 X)
git tag v1.0.0

3.2 Annotated Tag (주석 태그)

  • 릴리즈용으로 사용
  • 작성자, 날짜, 메시지 포함. GPG 서명도 가능
git tag -a v1.0.0 -m "Release version 1.0.0"

4. 태그 명령어 모음

4.1 태그 목록 보기

git tag

4.2 특정 커밋에 태그 달기

git tag v1 <커밋해시>

4.3 태그 체크아웃

git checkout v1
  • 결과: 분리된 HEAD(detached HEAD) 상태
  • → 커밋할 수 없으며, 하려면 새 브랜치를 생성해야 함
git checkout -b new-branch-from-v1

4.4 태그 삭제

git tag -d v1

4.5 원격 저장소에 태그 푸시

git push origin v1
  • 모든 태그 푸시
git push origin --tags

4.6 원격에서 태그 삭제

git push origin --delete tag v1

5. git describe: 태그 활용한 위치 설명

5.1 사용법

git describe
  • 현재 HEAD에서 가장 가까운 태그 기준으로 현재 커밋을 설명
v1.0.0-2-g9f23a1c
  • v1.0.0 → 가장 가까운 태그
  • -2 → 태그 이후 2번째 커밋
  • g9f23a1c → 현재 커밋 해시 요약

6. 주의사항

  • 태그는 브랜치처럼 체크아웃할 수 있지만, 작업을 이어갈 수는 없음
  • 커밋하려면 새 브랜치를 만들어야 함:
git checkout -b fix-hotbug v1.0.0

7. 태그 사용 예시

# 최신 커밋에 경량 태그
git tag v2.0.0

# 과거 커밋에 주석 태그
git tag -a v1.0.0 <커밋해시> -m "Initial release"

# 태그 확인
git tag

# 태그 푸시
git push origin --tags

✅ 마무리 요약

목적

명령어 예시

태그 생성

git tag v1.0.0

주석 태그

git tag -a v1.0.0 -m "메시지"

태그 보기

git tag

태그 푸시

git push origin v1.0.0

태그 전체 푸시

git push origin --tags

태그 삭제

git tag -d v1.0.0

원격 태그 삭제

git push origin --delete tag v1.0.0

태그 기준 커밋 설명

git describe