티스토리 뷰

Daylogs/Git

Git Tag로 버전 관리하기

ohgyun 2012. 1. 16. 01:20
발생일: 2012.01.16

문제:
담당하고 있는 서비스에서는 버전 관리 도구로 SVN을 사용하고 있다.
배포는 서버 개발팀에서 담당하고 있는데, 매 배포에 대한 버전 관리는 어떻게 관리하는 지 궁금해서 물어봤더니 각 릴리스에 대한 버전을 브랜치로 따서 관리한다고 한다.
예를 들어, v.1.0을 배포하고자 할 경우, Release Branch의 약어를 써서 RB-1.0 과 같은 이름의 브랜치를 따고, 해당 브랜치를 배포하는 식이다.

요새 Git으로 관리하고 있는 개인 프로젝트에서도 브랜치로 배포 버전을 따면 되겠구나~하고 생각하고 있었는데, 이것저것 알아보다 보니 실제로 브랜치보다는 태그(Tag)를 더 많이 사용하는 모양이다.

태그는 뭐고, Git에선 어떻게 사용하는 걸까?

해결책:

버전 관리 시스템에서 Tag란?
Tag는 특정 스냅샷에 대한 꼬리표(말 그대로 태그)다.
대부분의 버전 관리 도구에서 태그를 지원한다.

사실 지금까지는 습관적으로 trunk만 땡겨와 작업하고 있었는데, 이번 기회에 소스 리파지터리를 자세히 봐봤다.
이제서야 branches 영역과 tags 영역이 구분되어 있고, 개발팀에서는 브랜치를 굉장히 활발하게 활용하고 있다는 걸 알게 됐다.

SVN의 경우, 실제로 브랜치와 태그의 동작에는 차이가 없다고 한다.
두 가지 모두 동일하게 코드를 특정 영역으로 복사하는 것이며, 단지 의미 상의 차이만 있는 것이라 한다.
아마 그래서 서비스에서도 그냥 브랜치로 배포 버전을 관리하는 게 아닐까~~ 추측해본다.


Git에서 Tag 사용하기
Git에서도 태그를 지원하고 있다.

git tag 명령으로 간단하게 이미 만들어져 사용할 수 있는 태그를 조회할 수 있다.
특정 패턴을 가진 태그를 조회하고자 할 때엔 -l 옵션을 사용하면 된다.
예를 들어, git tag -l 'v.1.3.*' 을 실행하면, v.1.3의 태그들만 조회된다.

Git의 태그에는 Ligthweight Tag와 Annotated Tag 두 종류가 있다.
Lightweight Tag는 단순히 특정 커밋을 가리키는 포인터 역할을 하는 반면,
Annotated Tag는 태그를 만든 사람에 대한 정보, 태그 메세지, 서명 등을 추가할 수 있다.

Lightweight Tag는 간단하게 git tag <tagname> 과 같이 만들 수 있다.
예를 들어, git tag v1.3 를 실행하면, 현재 커밋에 v1.3이라는 태그를 붙인다.

Annotated Tag는 태그를 달 때, -a 또는 -s 옵션을 사용하면 된다.
옵션의 자세한 내용은 git tag --help 로 확인~~

적용한 내용의 태그를 조회하고자 할 때엔 git show <tagname> 을 실행~!
이 명령으로 각 태그의 커밋 정보를 조회할 수 있다.


실제로 jquey의 github을 보니 태그를 사용해 릴리스 버전 관리를 하고 있는 걸 볼 수 있었다.
https://github.com/jquery/jquery/tags


Git의 Tag, 잘 사용해보자~~ 


# 참고:
- SVN의 Branching/Tagging: http://wiki.kldp.org/wiki.php/SubversionBook/BranchingAndMerging


반응형
댓글
공지사항