Git 태그 기초

by PSEG posted Jan 31, 2015
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

기본적인 Git 태그 사용법에 대해 알아보겠습니다.

git-tags.jpg


Tagging 의 용도?

변경 이력의 주요한 지점에 표식을 남겨서 나중에 그 시점의 소스코드를 얻기 위해 사용됩니다.


태그 목록 보기

$ git tag
v0.1
v1.0
v1.1


특정 문자열을 포함하는 태그 찾는 방법

$ git tag -l 'v1.7.5*'
v1.7.5
v1.7.5-rc0
v1.7.5-rc1
v1.7.5-rc2
v1.7.5-rc3
v1.7.5.1
v1.7.5.2

태그 생성 방법

Git에는 lighweight와 annotated의 두 가지 종류의 태그가 있습니다.


Lightweight tag는 branch와 같이 변하지 않은 특성을 가집니다. 즉, 단순히 특정 commit을 가리키게 됩니다.


반면 annotated tag는 Git 데이터베이스에 object 전체 정보를 저장합니다. 저장되는 정보는 다음과 같습니다.

- check sum

- 태그를 수행한 사용자 이름, email

- 태그 수행 날짜

- 태그 메시지

- GNU Privacy Guard (GPG)로 sign 할 수 있음


일반적으로 annotated tag 사용을 권장합니다.


Annotated Tag 생성 방법:

$ git tag -a v2.4 -m 'message of version 2.4'
$ git tag
v0.1
v1.3
v1.4
v2.4

Annotated Tag 정보 열람 방법:

$ git show v2.4
tag v2.4
Tagger: PSEG <pseg@pseg.or.kr>
Date:   Sat May 3 20:19:12 2014 -0700

my version 2.4

commit ca82a6dff817ec66f44342007202690a93763949
Author: PSEG <pseg@pseg.or.kr>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number


Lightweight Tag 생성 방법:

$ git tag v2.4-lt
$ git tag
v0.1
v1.3
v1.4
v2.4-lt

Lightweight Tag 열람 방법:

$ git show v2.4-lt
commit ca82a6dff817ec66f44342007202690a93763949
Author: PSEG <pseg@pseg.or.kr>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number


커밋 후에 태그 생성하는 방법

이미 커밋된 이력에도 태그를 설정할 수 있습니다.


커밋 목록 확인:

$ git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme


태그 설정 (Annotated Tag 예), 정보 열람:

$ git tag -a v2.2-hotfix 9fceb02

$ git tag
v0.1
v1.2
v2.0
v2.2
v2.2-hotfix
v2.4-lt
v2.5

$ git show v2.2-hotfix
tag v2.2-hotfix
Tagger: PSEG <pseg@pseg.or.kr>
Date:   Mon Feb 9 15:32:16 2009 -0800

version v2.2-hotfix
commit 9fceb02d0ae598e95dc970b74767f19372d61af8
Author: PSEG <pseg@pseg.or.kr>
Date:   Sun Apr 27 20:43:35 2008 -0700

    updated rakefile
...

리모트 서버에 태그 반영하기

태그 정보는 단순한 git push로 리모트 서버에 전송되지 않습니다. 따라서 태그 정보를 리모트 서버에 반영하기 위한 특별한 옵션을 추가해야 합니다.


특정 태그 정보 푸쉬 방법:

푸시할 태그 이름을 옵션에 기술합니다.

$ git push origin v2.5
Counting objects: 14, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (14/14), 2.05 KiB | 0 bytes/s, done.
Total 14 (delta 3), reused 0 (delta 0)
To pseg@pseg.or.kr:projects/example.git
 * [new tag]         v2.5 -> v2.5


로컬의 모든 태그 정보 푸쉬 방법:

--tags 옵션을 추가하여 모든 태그가 푸쉬 되도록 합니다.

$ git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 160 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
 * [new tag]         v2.4 -> v2.4
 * [new tag]         v2.4-lt -> v2.4-lt


태그 불러오기

태그를 로컬에 check out 하려면 새로운 브랜치를 만들어야 합니다.

$ git checkout -b version2.4 v2.4
Switched to a new branch 'version2.4'


version2.4 브랜치를 수정한 후 커밋하면 v2.4 태그와 다른 버전이 된다는걸 주의해야 합니다:)


Who's PSEG

profile

PSEG는 Practical Software Engineering Group의 약자입니다. 

이론을 넘어 실용적으로 활용할 수 있는 소프트웨어 공학을 공유하는게 그룹의 목적입니다.