Git

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

신림쥐 2025. 1. 15. 09:49
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