포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 20MB 입니다.

안녕하세요?

 

현재 국내에 GIT에 대한 제대로 된 문서가 없기에,  GIT 사용자 가이드에 대하여 번역을 시작하게 되었습니다.

번역의 오류로 틀린 내용이 있을 수도 있으니, 오류 발견시 댓글을 남겨주시면 감사하겠습니다.

 

GIT 사용법 (ProGIT) - 2.6. 태그(TAGS) 붙이기

 

원본 : ProGIT  Book(http://progit.org)

번역 : 김재훈(이솝 임베디드 포럼, http://www.aesop.or.kr)

 

2.6. 태그(TAGS) 붙이기

 

현존하는 수많은 VCS(Version Control System)과 같이 Git에도 태그 기능이 있어, 프로젝트 진행 상의 중요한 지점에 태그를 붙일 수 있습니다. 일반적으로 이 기능은 버전 1.0과 같이 S/W 릴리즈 지점을 지정하기 위해 사용 합니다.

 

이 섹션에서는 기존의 태그 일람의 취득이나 새로운 태그의 작성 그리고 다양한 태그의 형식 등에 대해 취급합니다.

 

2.6.1. 태그의 일람 표시

 

Git에서 기존의 태그의 일람을 표시하는 방법은 간단하게 git tag 명령을 입력하시면 됩니다.

 

$ git tag
v0.1
v1.3


 이 명령은 태그를 알바벳 순서대로 표시 합니다. 이 표시 순서에 깊은 의미는 없습니다.

 

패턴을 지정해 태그를 검색할 수도 있습니다. Git의 개발 소스가 저장된 저장소의 예를 들면 약 240개 이상의 태그가 등록되어 있습니다. 그 중에서도 1.4.2 버전의 범위에 해당되는 태그만을 보고 싶은 경우는 다음과 같이 합니다.

 

$ git tag -l 'v1.4.2.*'
v1.4.2.1
v1.4.2.2
v1.4.2.3
v1.4.2.4

 

2.6.2. 태그의 작성

 

Git 태그에는 경량(lightweight) 버전과 주석을 첨부 한(Annotated) 버전의 두 가지가 있습니다. 경량 버전의 태그는 변경이 없는 브랜치와 같은 것 입니다.

 

이것은 특성의 위탁에 대한 단순한 포인터 개념이라고 생각하시면 됩니다. 반면에 주석 첨부 버전의 태그는 Git 데이터베이스 내에서 완전한 오브젝트로써 격납 됩니다. 여기에는 체크 섬도 붙으며, 태그를 작성한 사람의 이름,메일 주소,작성 일시,태그 메시지 등도 포함 됩니다. 또한 서명을 적어 GNU Privacy Guard(GPG) 키에 대한 검증도 진행할 수 있습니다. 일반적으로 이러한 정보를 포함할 수 있는 주석 첨부 버전의 태그를 사용하는 것을 추천 합니다.

 

하지만, 일시적으로 사용할 만한 태그인 경우나 어떠한 이유로 정보를 포함하고 싶지 않은 경우는 경량 버전의 태그를 사용하는 것이 좋습니다.

 

2.6.3. 주석 첨부 버전 태그

 

Git에서는 주석 첨부 버전의 태그를 간단하게 작성할 수 있습니다. 가장 간단한 방법은 tag 명령 실행시에 -a 옵션을 붙이는 것 입니다.

 

$ git tag -a v1.4 -m 'my version 1.4'
$ git tag
v0.1
v1.3
v1.4


-m 옵션은 태그 입력시의 메시지를 지정할 때 사용 됩니다. 이것은 태그와 함께 오브젝트로 Git 저장소에 격납 됩니다. 태그 작성시에 메시지 입력을 생략하면, 태그를 입력시 메시지를 입력하기 위한 에디터가 자동으로 수행 됩니다.

 

태그의 데이터와 관련되는 위탁 내역을 보려면 git show 명령을 사용 합니다.

 

$ git show v1.4
tag v1.4
Tagger: Scott Chacon <[email protected]>
Date:   Mon Feb 9 14:45:11 2009 -0800

my version 1.4
commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7... a6b4c97...
Author: Scott Chacon <[email protected]>
Date:   Sun Feb 8 19:02:46 2009 -0800

    Merge branch 'experiment'


여기에는 태그를 붙인 사람의 정보와 그 일시, 그리고 주석이 표시되며 그 이후에 위탁 정보가 표시 됩니다.

 

2.6.4. 서명 첨부 태그

 

만약 여러분이 GPG 키를 가지고 있으면 태그에 서명을 할 수 있습니다. 이 경우에는 -a 대신에 -s를 지정하게 됩니다.

 

$ git tag -s v1.5 -m 'my signed 1.5 tag'
You need a passphrase to unlock the secret key for
user: "Scott Chacon <[email protected]>"
1024-bit DSA key, ID F721C45A, created 2009-02-09


이 태그에 대해서 git show를 실행하면, 당신의 GPG 서명이 표시 됩니다.

 

$ git show v1.5
tag v1.5
Tagger: Scott Chacon <[email protected]>
Date:   Mon Feb 9 15:22:20 2009 -0800

my signed 1.5 tag
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)

iEYEABECAAYFAkmQurIACgkQON3DxfchxFr5cACeIMN+ZxLKggJQf0QYiQBwgySN
Ki0An2JeAVUCAiJ7Ox6ZEtK+NvZAj82/
=WryJ
-----END PGP SIGNATURE-----
commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7... a6b4c97...
Author: Scott Chacon <[email protected]>
Date:   Sun Feb 8 19:02:46 2009 -0800

    Merge branch 'experiment'


태그의 서명을 검증하는 방법에 대해서는 잠시 후에 설명 합니다.

 

2.6.5. 경량 버전 태그

 

위탁에 태그를 붙이는 또 한가지의 방법이 경량 버전 태그 입니다. 이것은 기본적으로 위탁의 체크섬만을 보관/유지 하는 방법으로, 그 이외의 정보는 포함되지 않습니다. 경량 버전의 태그를 작성하려면 -a, -s 혹은 -m과 같은 옵션을 붙이지 않고 명령을 실행하면 됩니다.

 

$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5


이 태그에 대해서는 git show 명령을 실행해도, 방금전 설명한 주석 첨부 버전의 태그와 같은 추가 정보는 표시되지 않습니다. 단지 이 태그에 대응하는 위탁의 정보만을 표시할 뿐 입니다.

 

$ git show v1.4-lw
commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7... a6b4c97...
Author: Scott Chacon <[email protected]>
Date:   Sun Feb 8 19:02:46 2009 -0800

    Merge branch 'experiment'


2.6.6. 태그의 검증

 

서명이 첨부된 태그를 검증하려면 git tag -v [tag-name] 명령을 사용 합니다. 이 명령은 GPG를 사용하여 태그를 검증 합니다. 이 명령이 제대로 실행되려면, 서명자의 공개키가 당신의 키 체인이 포함되어 있어야 합니다.

 

$ git tag -v v1.4.2.1
object 883653babd8ee7ea23e6a5c392bb739348b1eb61
type commit
tag v1.4.2.1
tagger Junio C Hamano <[email protected]> 1158138501 -0700

GIT 1.4.2.1

Minor fixes since 1.4.2, including git-mv and git-http with alternates.
gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A
gpg: Good signature from "Junio C Hamano <[email protected]>"
gpg:                 aka "[jpeg image of size 1513]"
Primary key fingerprint: 3565 2A26 2040 E066 C9A7  4A7D C0C6 D9A4 F311 9B9A

 

만약 서명자의 공개키를 당신이 가지고 있지 않은 경우는 다음과 같은 메시지가 표시 됩니다.

 

gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A
gpg: Can't check signature: public key not found
error: could not verify the tag 'v1.4.2.1'


2.6.7. 과거 위탁 내역에 태그 첨부

 

과거의 위탁 내역에 태그를 첨부 할 수도 있습니다. 예를 들어 당신이 위탁한 내역이 다음과 같다고 가정 합니다.

 

$ 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


만약 여러분이 이 프로젝트에 v1.2 태그를 붙이는 것을 잊고 있었다고 가정 합니다. 원래대로라면 "updated rakefile"의 위탁에 태그를 붙여야 했던 것 입니다. 하지만, Git에서는 지난 위탁에서도 태그를 붙일 수 있습니다. 특정의 위탁에 태그를 붙이려면 그 위탁의 체크 섬(혹은 그 일부)를 명령의 맨 마지막에 다음과 같이 지정 합니다.

 

$ git tag -a v1.2 9fceb02


 그럼 다음과 같이 해당 위탁에 태그가 붙어진 것을 확인할 수 있습니다.

 

$ git tag
v0.1
v1.2
v1.3
v1.4
v1.4-lw
v1.5

$ git show v1.2
tag v1.2
Tagger: Scott Chacon <[email protected]>
Date:   Mon Feb 9 15:32:16 2009 -0800

version 1.2
commit 9fceb02d0ae598e95dc970b74767f19372d61af8
Author: Magnus Chacon <[email protected]>
Date:   Sun Apr 27 20:43:35 2008 -0700

    updated rakefile
...


2.6.8 태그의 공유

 

기본적으로 git push 명령은 태그를 원격 저장소에 보내지 않습니다. 태그를 만들면 태그를 원격 서버에 푸쉬 하라고 명시할 필요가 있습니다. 그 방법은 원격 브랜치를 공유할 때와 비슷 합니다. 다음과 같이 git push origin [tagname] 명령을 실행 합니다.

 

$ git push origin v1.5
Counting objects: 50, done.
Compressing objects: 100% (38/38), done.
Writing objects: 100% (44/44), 4.56 KiB, done.
Total 44 (delta 18), reused 8 (delta 1)
To [email protected]:schacon/simplegit.git
* [new tag]         v1.5 -> v1.5


만약 많은 태그를 한 번에 푸쉬 하고 싶은 경우는 git push 명령에 --tags 옵션을 사용 합니다. 이 명령은 현재 로컬 저장소에 저장된 태그 중 아직 원격 서버에 존재하지 않는 태그 들을 모두 전송 합니다.

 

$ git push origin --tags
Counting objects: 50, done.
Compressing objects: 100% (38/38), done.
Writing objects: 100% (44/44), 4.56 KiB, done.
Total 44 (delta 18), reused 8 (delta 1)
To [email protected]:schacon/simplegit.git
 * [new tag]         v0.1 -> v0.1
 * [new tag]         v1.2 -> v1.2
 * [new tag]         v1.4 -> v1.4
 * [new tag]         v1.4-lw -> v1.4-lw
 * [new tag]         v1.5 -> v1.5


이것으로 누군가가 원격 저장소에 클론이나 풀을 실시했을 때에 당신이 붙여 놓은 모든 태그를 취득 할 수 있게 됩니다.

profile

인생은 연극이고 세상은 무대이다!

이솝 임베디드 포럼 운영 및 비즈니스와 관련된 것 이외에 E-Mail이나 메신저 및 휴대폰 등을 통한 개인적인 질문 및 답변은 받지 않습니다. 문의 사항은 이솝 임베디드 포럼 게시판을 이용해 주시면 감사하겠습니다.

엮인글 :
http://www.aesop.or.kr/index.php?mid=Board_Documents_Linux_Applications&document_srl=35603&act=trackback&key=d58

김진

2010.04.28 20:37:09
*.132.210.253

감명 깊게 읽고 있습니다...

꼬옥~~ 끝을 봐주셨으면 합니다.

힘내세요.

hotdigi

2010.08.25 06:18:16
*.122.38.105

좋은 자료 감사합니다. 

List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인