Play Game in DOSGamePlayer App
Git 의 Tag 는 깃 레포지토리에서 특정 객체를 가리키는 역할을 합니다. 보통 소스의 버전을 관리하는 데 많이 사용됩니다.
태그 조회 tag
명령어를 이용하여 현재 로컬 저장소의 모든 태그를 조회할 수 있습니다
1 2 3 4 5 6 > git tag v0.1.0 v0.1.1 v0.2.0 ...
tag
명령어에 -l
또는 --list
옵션 및 와일드카드(*
) 패턴과 함께 사용하여 조건에 맞는 태그를 조회할 수 있습니다.
1 2 3 4 > git tag --list "v0.1.*" v0.1.0 v0.1.1
show-ref
명령어를 --tags
옵션과 함께 태그 리스트를 조회할 수 있습니다.
1 2 3 4 5 6 > git show-ref --tags cdcdccd2bed17212a41eed92c4afc3b9432cdee4 refs/tags/list c4a63e238b4176103532563b270c374602488275 refs/tags/v1.0.0 2b35cb048ebaca097fd0b8761a16fc4cc2c0eb1b refs/tags/v1.1.0 37c606d7a2d7390649748ec8acd76cd07876c2eb refs/tags/v1.2.0 ...
show
명령어를 사용하여 특정 태그에 대한 정보를 조회할 수 있습니다.
태그 생성 lightweight
와 annotated
두 종류의 태그를 지원합니다.
Lightweight
: 특정 커밋을 가르키는 역활을 합니다. (포인터 역할)
Annotated
: 만든 사람, 이메일, 날짜, 메시지를 객체로 저장합니다 그리고 GPG(GNU Privacy Guard)로 서명할수 있습니다.
Lightweight 태그 생성 -a
, -s
, -m
중 아무 옵션도 지정하지 않으면 lightweight 태그를 생성할 수 있습니다. lightweight 태그에는 어떠한 추가적인 정보도 저장할 수 없습니다.
Annotated 태그 생성 tag 명령어를 -a
옵션과 함께 사용하여 annotated 태그를 생성할 수 있습니다.
1 > git tag -a <TAG NAME> -m "<TAG MESSAGE>"
특정 커밋을 지정하여 태그를 만들려면 커맨드 맨 뒤에 COMMIT CHECKSUM 를 지정합니다
1 2 3 > git tag -a <TAG NAME> <COMMIT CHECKSUM> git tag -a v0.1.0 322b42f
annotated 태그는 태그 정보와 커밋 정보를 함께 보여주지만, lightweight 태그는 태그에 대한 정보를 저장할 수 없기 때문에 가리키고 있는 커밋에 대한 정보만 보여준다
태그 조회 (lightweight vs annotated) show-ref
명령어를 --tags --dereference
옵션과 함께 태그의 원본 커밋객체까지 조회가 가능합니다
1 2 3 4 5 6 7 > git show-ref --tags --dereference cdcdccd2bed17212a41eed92c4afc3b9432cdee4 refs/tags/list c4a63e238b4176103532563b270c374602488275 refs/tags/v1.0.0 2b35cb048ebaca097fd0b8761a16fc4cc2c0eb1b refs/tags/v1.1.0 37c606d7a2d7390649748ec8acd76cd07876c2eb refs/tags/v1.2.0 88c34a1ca247851f721738e36ca4228cf8b0724c refs/tags/v1.2.0^{} ...
--dereference
옵션 을 사용하면 annotated 태그가 v1.2.0
가 가르키고 있는 v1.2.0^{}
객체도 조회가 가능하다.
위의 태그 리스트에서 v1.2.0
만 태그 객체이다. 나머지는 태그가 가르키는 원복 객체의 COMMIT CHECKSUM 정보이다
1 37c606d7a2d7390649748ec8acd76cd07876c2eb refs/tags/v1.2.0
태그 삭제 로컬 저장소의 태그를 삭제하려면 -d
또는 --delete
옵션을 사용한다
태그 수정 lightweight 태그 수정 1 2 > git tag <NEW TAG NAME> <OLD TAG NAME> > git tag -d <OLD TAG NAME>
1 2 3 4 5 6 7 8 9 10 11 12 > git show-ref --tags --dereference c4a63e238b4176103532563b270c374602488275 refs/tags/v1.0.0 2b35cb048ebaca097fd0b8761a16fc4cc2c0eb1b refs/tags/v1.1.0 > git tag v1.1.1 v1.1.0 > git show-ref --tags --dereference c4a63e238b4176103532563b270c374602488275 refs/tags/v1.0.0 2b35cb048ebaca097fd0b8761a16fc4cc2c0eb1b refs/tags/v1.1.0 2b35cb048ebaca097fd0b8761a16fc4cc2c0eb1b refs/tags/v1.1.1 > git tag -d v1.1.0
annotated 태그 수정 1 2 > git tag -a <NEW TAG NAME> <OLD TAG NAME>^{} -m "<NEW TAG MESSAGE>" > git tag -d <OLD TAG NAME>
<OLD TAG NAME>^{}
는 OLD TAG 가 가르키는 객체의 COMMIT CHECKSUM 정보이다.
1 2 3 4 5 6 7 8 9 10 > git show-ref --tags --dereference 37c606d7a2d7390649748ec8acd76cd07876c2eb refs/tags/v1.2.0 88c34a1ca247851f721738e36ca4228cf8b0724c refs/tags/v1.2.0^{} > git tag -a v1.3.0 v1.2.0^{} -m "<NEW TAG MESSAGE>" > git tag -a v1.3.0 88c34a1 -m "<NEW TAG MESSAGE>" > git tag -d v1.2.0
원격 저장소의 태그 조회
원격 저장소에 태그 푸시 원격 저장소에 태그는 별도로 push 해야 합니다.
1 2 3 4 5 6 > git push <REMOTE> <TAG NAME> > git push origin v1.0.0 Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 To https://github.com/skyksit/blog.git * [new tag] v1.0.0 -> v1.0.0
--tags
옵션을 이용하여 전체 태그를 한 번에 푸시할 수 있습니다
1 2 3 4 5 6 7 8 9 10 git push origin --tags Enumerating objects: 1, done . Counting objects: 100% (1/1), done . Writing objects: 100% (1/1), 176 bytes | 88.00 KiB/s, done . Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 To https://github.com/skyksit/blog.git * [new tag] list -> list * [new tag] v1.1.0 -> v1.1.0 * [new tag] v1.1.1 -> v1.1.1 * [new tag] v1.2.0 -> v1.2.0
--follow-tags
옵션으로 commit 과 tag 를 동시에 push 할 수 있습니다
1 > git push --follow-tags
원격 저장소 태그 삭제 태그 삭제에는 3가지 명령어를 다 사용 가능합니다
1 2 3 > git push <REMOTE> :refs/tags/<TAG NAME> > git push <REMOTE> :<TAG NAME> > git push <REMOTE> -d <TAG NAME>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 > git ls-remote --tags From https://github.com/skyksit/blog.git cdcdccd2bed17212a41eed92c4afc3b9432cdee4 refs/tags/list c4a63e238b4176103532563b270c374602488275 refs/tags/v1.0.0 2b35cb048ebaca097fd0b8761a16fc4cc2c0eb1b refs/tags/v1.1.0 2b35cb048ebaca097fd0b8761a16fc4cc2c0eb1b refs/tags/v1.1.1 37c606d7a2d7390649748ec8acd76cd07876c2eb refs/tags/v1.2.0 88c34a1ca247851f721738e36ca4228cf8b0724c refs/tags/v1.2.0^{} > git push origin :refs/tags/list To https://github.com/skyksit/blog.git - [deleted] list > git push origin :v1.0.0 To https://github.com/skyksit/blog.git - [deleted] v1.0.0 > git push origin -d v1.1.0 To https://github.com/skyksit/blog.git - [deleted] v1.1.0 > git ls-remote --tags From https://github.com/skyksit/blog.git 2b35cb048ebaca097fd0b8761a16fc4cc2c0eb1b refs/tags/v1.1.1 37c606d7a2d7390649748ec8acd76cd07876c2eb refs/tags/v1.2.0 88c34a1ca247851f721738e36ca4228cf8b0724c refs/tags/v1.2.0^{}
연관포스트