Git tag

운영 배포 시 Tag를 이용해 릴리즈를 관리하고 있습니다. 오랜 시간 동안 쌓인 릴리즈 태그와 좀 더 효율적으로 태그를 관리하기 위해 작성합니다.

  1. git tag는 Git에서 사용되는 명령어로, 특정 지점을 표시하기 위해 사용됩니다.
  2. 태그는 주로 프로젝트의 중요한 지점, 예를 들어 버전 릴리스를 표시하는 데 사용됩니다.
  3. 태그는 두 가지 유형이 있습니다: 경량 태그(lightweight)주석 태그(annotated)입니다.

경량 태그 (Lightweight Tag)

경량 태그는 특정 커밋을 가리키는 포인터 같은 것으로, Metadata나 tag 정보를 저장하지 않습니다. 단지 커밋 ID에 대한 참조만을 포함합니다.

생성:

git tag <태그명>

주석 태그 (Annotated Tag)

주석 태그는 태그를 만든 사람의 이름, 이메일, 태그를 만든 날짜와 메시지를 포함하여 태그를 생성합니다. 이 정보는 Git 데이터베이스에 저장됩니다.

생성:

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

예를 들어, v1.0이라는 태그를 현재 커밋에 추가하고, 태그 메시지로 “버전 1.0 릴리스”를 사용하려면 다음과 같이 입력합니다

git tag -a v1.0 -m "버전 1.0 릴리스"

태그 조회

생성된 모든 태그 목록을 보려면 다음 명령어를 사용합니다

# Tag 전체 조회
git tag

# 특정 Tag 조회
git tag -l "<태그명>*"

# Tag 정보 조회
git show "<태그명>"

태그 공유

기본적으로 git push 명령은 태그를 원격 저장소에 전송하지 않습니다. 태그를 원격 저장소에 공유하려면 다음 명령어를 사용해야 합니다

특정 태그를 원격 저장소에 푸시:

git push origin <태그명>

모든 태그를 원격 저장소에 푸시:

git push origin --tags

태그 삭제

로컬 저장소에서 태그를 삭제하려면 다음 명령어를 사용합니다:

git tag -d <태그명>

원격 저장소에서 태그를 삭제하려면:

git push --delete origin <태그명>

특정 태그에서 브랜치 생성

특정 태그에서 시작하는 새 브랜치를 만들고 싶다면 다음 명령어를 사용합니다:

git checkout -b <브랜치명> <태그명>

git tag 명령어는 프로젝트의 중요한 지점들을 효과적으로 관리할 수 있게 해주며, 버전 관리 전략의 일부로 널리 사용됩니다.

태그 일괄 삭제

CI(Continuous Integration:지속적 통합)를 관리하는중 누적된 Tag를 정리하고 관리하는데 사용.

Remote

$ git tag -l '<태그명>*' | xargs git push --delete origin

Local

$ git tag -l '<태그명>*' | xargs git tag -f 

Remote에서 태그 가져오는 방법

$ git fetch --tags

Remote 에 tag가 없으면 local tag 삭제

git tag -l | xargs git tag -d && git fetch -t