본문 바로가기
Git

Git Tag로 버전 관리와 릴리스를 쉽게

by 우킹쥐 2025. 1. 15.
728x90

 

     


    개요

    Git은 버전 관리 시스템으로 소프트웨어 개발에 필수적인 도구입니다. 그중에서도 Git Tag는 특정 커밋을 참조하고 버전을 관리하는 데 유용한 기능입니다. 이번 포스트에서는 Git Tag를 사용하여 버전 관리릴리스 관리를 어떻게 쉽게 할 수 있는지 알아보겠습니다.

     

    Git Tag

    Git Tag는 특정 커밋을 쉽게 참조하기 위한 버전 관리 도구입니다. 주로 릴리스 버전을 기록하거나, 중요한 커밋을 표식하는 데 사용됩니다.

    Git에서 tag는 이름을 붙여 커밋을 참조할 수 있도록 해주며, 이로 인해 프로젝트의 버전 관리가 용이해집니다. branch와 달리 변경되지 않는 참조이므로, 프로젝트의 중요한 지점(예: 릴리스, 안정된 버전)을 표시하는 데 이상적입니다.

     

    Git Tag, Branch 비교

    Git에서 Tag와 Branch는 모두 커밋을 참조하는 역할을 합니다.

      Git Tag Git Branch
    참조하는 커밋 고정된 커밋(commit_id) 최신 커밋 (checkout 시 변경됨)
    특징 변경되지 않는 참조 최신 커밋을 추적하는 작업 중인 포인터, 결합 및 병합 가능 (merge)
    변경 가능성 변경되지 않음 (고정) 브랜치 이동 시 최신 커밋을 가리킴
    주요 사용 용도 버전 관리, 릴리스 관리, 안정된 지점 참조 기능 개발, 버그 수정 등 병렬 작업
    커밋 포인터 특정 커밋을 가리킴 (고정) 브랜치가 커밋을 가리킴 (변경 가능)
    사용 예시 git tag v1.0.0 (특정 커밋을 고정하여 버전 관리) git checkout feature/login-page (브랜치 변경)

     

    Git Tag 종류

    Lightweight Tag

    가장 기본적인 형태의 태그로, 실제 커밋에 대한 참조만 포함됩니다. 추가적인 메타데이터나 메시지가 포함되지 않습니다.

    git tag <tag-name>

     

    Annotated Tag

    메시지와 태그 작성자의 정보, 날짜 등을 포함한 태그입니다. 일반적으로 릴리스를 기록할 때 사용됩니다.

    git tag -a <tag-name> -m "태그 메시지"

     

    Git Tag CLI

    태그 목록 조회

    $ git tag

    태그 조건 검색

    l 또는 --list 옵션 및 와일드카드(*) 패턴 활용하여 태그명 기준의 검색 조건을 줄 수 있습니다. 

    $ git tag -l {태그 이름}
    $ git tag -l v1.1.*

     

    태그 상세 조회

    $ git show {태그 이름}

     

    태그 생성

    Lightweight 태그를 지정할 때 태그 이름 뒤에 커밋 ID(체크섬)를 명시하지 않으면, 현재 HEAD가 가리키는 최신 커밋에 태그가 붙습니다

    $ git tag <태그명>
    $ git tag v1.0.0

     

    특정 커밋에 태그를 달 수도 있습니다. 커밋 ID는 축약된 6~7자리만 사용해도 됩니다.

     

    git tag v1.0.1 <commit-hash>

     

    Annotated Tag를 생성하려면, git tag 명령어를 사용하여 태그에 작성자, 이메일, 작성 날짜, 그리고 메시지를 포함할 수 있습니다.

    $ git tag -a 태그명 [커밋체크섬] // -a 옵션 추가 (Annotated태그)
    $ git tag -a 태그명 -m "태그메시지" [커밋체크섬]

     

     

    태그 삭제

    로컬에서 태그를 삭제하려면 아래 명령어를 사용합니다.

    $ git tag -d 태그명

     

     

    원격 저장소와 Git Tag 

    git push는 자동으로 태그를 원격 저장소에 전송하지 않습니다. 따라서, 태그를 push하려면 별도로 명령어를 입력해야 합니다. --tags 옵션을 사용하면 로컬의 모든 태그를 한 번에 push할 수 있습니다. 또한, git pull이나 git clone을 통해 데이터를 받을 때는 원격 저장소의 태그도 자동으로 함께 받아집니다.

    원격저장소 태그 조회

    $ git ls-remote --tags

    원격저장소 태그 생성

     

    // 로컬에서 생성한 태그를 원격 저장소에 푸시
    $ git push 저장소명 태그명
    
    // 로컬에서 생성한 모든 태그를 원격 저장소로 푸시
    $ git push 저장소명 --tags

    원격 저장소 태그를삭제

    git push origin --delete tag <tag-name>

     

    728x90