[Git Tip] Git Tag 붙이기

Git의 브랜치 전략 중 Git-flow에 대해 포스팅하기 이전에, 각 master브랜치 커밋에 버전 태그를 붙이기 위한 Git Tag 관련 명령어에 대해 간단히 살펴보도록 하겠습니다.


1. Tag 생성 및 삭제

Git 태그에는 Lightweight태그와 Annotated태그가 있습니다. 태그명은 보통 버전명을 붙여 사용합니다.

Lightweight태그는 간단히 지정한 커밋을 가리키는 포인터 같은 개념으로 태그명만 지정할 수 있습니다.

git tag 태그명
git tag 태그명 커밋ID

tag를 지정할 때 태그이름 뒤에 커밋 ID(체크섬, checksum)을 명시하지 않으면 현재 HEAD가 가리키는 최신 커밋에 태그가 붙게 됩니다. checksum은 축약된 6~7자리만 붙여도 됩니다.



Annotated태그는 태그 작성자, 이메일, 작성날짜, 메시지(옵션)까지 붙여 저장 가능한 태그 객체입니다.

태그를 붙이는 방법은 Lightweigth 태그 방식에 -a 옵션만 붙여주면 됩니다.

git tag -a 태그명 [커밋체크섬]
git tag -a 태그명 -m "태그메시지" [커밋체크섬]

-m 옵션으로 commit처럼 Annotated태그에 메시지를 붙일 수 있습니다.

GPG(GNU Privacy Guard) 서명도 가능합니다. -s옵션으로 서명할 수 있습니다. (GPG 서명에 대해서는 추후 사용하보게 되면 추가 수정하겠습니다…;;)

git tag -s 태그명 -m "태그메시지"



로컬의 태그를 삭제하는 방법은 간단합니다. 태그명과 함께-d--delete옵션을 사용하시면 됩니다.

git tag -d 태그명


2. Tag 조회하기

우선 로컬 프로젝트에 어떤 태그가 있는지 확인하기 위해서는 다음처럼 리스트를 조회할 수 있습니다.

git tag
git tag -l "태그명"

-l 혹은 --list옵션으로 태그명 기준의 검색 조건을 줄 수 있습니다. 태그명에는 예를 들어 “v1.0*“처럼 *로 와일드카드를 붙여 유연한 처리를 할 수 있습니다.

또한 각 태그명에 대한 상세 정보를 확인할 경우 다음 명령어를 사용하시면 됩니다.

git show 태그명


3. 원격저장소 Tag 공유

기본적으로 Git에서 push는 자동으로 태그를 원격저장소 서버에 전송하지 않습니다. 따라서 아래와 같이 별도로 태그를 push해줘야 합니다.

git push 저장소명 태그명
git push 저장소명 --tags

태그명 대신 --tags 옵션을 주면 로컬의 모든 태그를 push할 수 있습니다.

참고로 push할 때 태그 정보 전송이 자동으로 되지 않는 것일뿐, pullclone으로 데이터를 받을 때는 자동으로 원격저장소의 tag도 같이 받아집니다.



마지막으로 원격저장소의 태그리스트 조회와 태그 삭제 명령은 다음과 같습니다.

원격저장소 태그 리스트 조회

git ls-remote --tags

원격저장소 태그 삭제

git push -d 태그명


언제나 읽어주셔서 감사합니다.^^


개인 공부용 블로그입니다.
잘못된 부분에 언제든지 댓글이나 메일로 지적해주시면 감사하겠습니다.

Tags: ,

Categories:

Updated:

Leave a comment