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
✅ 마무리 요약
목적 | 명령어 예시 |
---|---|
태그 생성 |
|
주석 태그 |
|
태그 보기 |
|
태그 푸시 |
|
태그 전체 푸시 |
|
태그 삭제 |
|
원격 태그 삭제 |
|
태그 기준 커밋 설명 |
|