GIT

[GIT] โšก๏ธ ํƒœ๊ทธ ๊ธฐ๋Šฅ ๋ฐ ์‚ฌ์šฉ๋ฒ• (git tag)

์ธํŒŒ_ 2021. 11. 21. 22:10

git-tag

git ํƒœ๊ทธ(Tag)

git์—์„œ ํƒœ๊ทธ๋ž€ ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ฌด์–ธ๊ฐ€ ํ‘œ์‹œ๋ฅผ ํ•ด๋‘๊ธฐ ์œ„ํ•œ ํƒœ๊น… ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ, ํŠน์ • ์ปค๋ฐ‹์„ ํƒœ๊ทธํ•ด ๋‘๋Š” ๊ฒƒ์ด๋‹ค.

ํŠน์ • ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋งํฌ๋ผ๊ณ  ์ƒ๊ฐํ•ด๋„ ์ข‹๋‹ค.

git-tag

์ด๋ ‡๊ฒŒ ํƒœ๊ทธ๋ฅผ ๋ถ™์—ฌ๋†“์œผ๋ฉด, ์ปค๋ฐ‹๋ฒˆํ˜ธ๋ฅผ ์ ๋Š” ๋Œ€์‹ ์— ํƒœ๊ทธ๋ช…์„ ์ ์–ด์„œ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์‹œ์šฉํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค. ($ git reset d07c24e ๋Œ€์‹  $ git reset v1.0.0 ์œผ๋กœ)

๋‚˜์ค‘์— ์ž‘์—…์„ ํ•˜๋‹ค๋ณด๋ฉด ์ˆ˜๋ฐฑ๊ฐœ์˜ ์ปค๋ฐ‹๋“ค์ด ์Œ“์ผํ…๋ฐ, ๊ทธ ์ปค๋ฐ‹๋“ค ์ค‘์— ์ค‘์š”ํ•œ๊ฒƒ๋งŒ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ด์„œ ๊ฐ€๋…์„ฑ์žˆ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ปค๋ฐ‹๊ณผ ํƒœ๊ทธ์˜ ์ฐจ์ด์ ์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์ปค๋ฐ‹์˜ ๊ฒฝ์šฐ checkout ํ•˜์—ฌ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜,

ํƒœ๊ทธ๋Š” ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋ฉฐ, ๋”ฐ๋ผ์„œ ์ฝ๊ธฐ์ „์šฉ ์ปค๋ฐ‹๊ฐ™์€ ๊ฐœ๋…์ด๋‹ค.

 

๋ณดํ†ต ํƒœ๊ทธ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฒ„์ „์„ ๋ฆด๋ฆฌ์ฆˆ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ์ œํ’ˆ์ด v1.0 ์ด ๋ฆด๋ฆฌ์ฆˆ ๋ ๋•Œ ํƒœ๊น…์„ ํ•œ๋ฒˆ ํ•ด ๋‘๊ณ , v1.1 ๋ฒ„์ „์„ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๊ทธ ์‚ฌ์ด์— ๋งŒ๋“ค์–ด์ง€๋Š” ๋ธŒ๋žœ์น˜๋“ค๊ณผ ์ปค๋ฐ‹๋“ค์ด ์กด์žฌํ•˜๋Š”๋ฐ ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์€ ์ปค๋ฐ‹์œผ๋กœ๋งŒ ๊ด€๋ฆฌํ•˜๋‹ค๊ฐ€, v1.1 ๋ฒ„์ „์ด ์™„์„ฑ๋˜๋Š” ์ปค๋ฐ‹์— ํƒœ๊น…์„ ํ•ด๋‘๋Š” ๊ฒƒ์ด๋‹ค.

 

git-tag

 

git tag (ํƒœ๊ทธ ์กฐํšŒ)

tag ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ˜„์žฌ ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ชจ๋“  ํƒœ๊ทธ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค

ํƒœ๊ทธ๋Š” ๋ฌธ์ž ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๋ฏ€๋กœ ๋ฒ„์ „ ํ˜•์‹์„ ์ž˜ ๋”ฐ๋ฅธ๋‹ค๋ฉด ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฒ„์ „์ด ๊ฐ€์žฅ ๋จผ์ € ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค.

$ git tag

v0.1.0
v0.1.1
v0.2.0
...

 

tag ๋ช…๋ น์–ด์— -l ๋˜๋Š” --list ์˜ต์…˜ ๋ฐ ์™€์ผ๋“œ์นด๋“œ(*) ํŒจํ„ด๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์— ๋งž๋Š” ํƒœ๊ทธ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ ํŠน์ • 1.8๋ฒ„์ „๋Œ€์˜ ๋ชจ๋“  ํƒœ๊ทธ๋ฅผ ๋ณด๊ณ ์‹ถ์€ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค.

$ git tag -l 'v1.8.5*'

v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5.1
v1.8.5.2
v1.8.5.3

 

git show-ref --tags --dereference (์ปค๋ฐ‹๋ฒˆํ˜ธ์™€ ํƒœ๊ทธ ์กฐํšŒ)

# ์ปค๋ฐ‹๋ฒˆํ˜ธ์™€ ํƒœ๊ทธ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๊ฐ„๋‹จํžˆ ์กฐํšŒํ• ์ˆ˜ ์žˆ์–ด, ์š”๊ธดํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค.
$ git show-ref --tags --dereference

git-tag

 

git ls-remote --tags (์›๊ฒฉ์ €์žฅ์†Œ์— ์žˆ๋Š” ํƒœ๊ทธ ์กฐํšŒ)

# ์›๊ฒฉ์ €์žฅ์†Œ์— ์žˆ๋Š” ํƒœ๊ทธ ๋‚˜์—ดํ•˜๊ธฐ
$ git ls-remote --tags

From https://github.com/skyksit/blog.git
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 show

show ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํƒœ๊ทธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

$ git show v0.1.0

git-tag

 

git tag <ํƒœ๊ทธ ๋ฒ„์ ผ> (ํƒœ๊ทธ ์ƒ์„ฑ)

git์˜ ํƒœ๊ทธ๋Š” ์ƒ์„ฑํ• ๋•Œ lightweight์™€ annotated ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.

  • Lightweight :
    - ํŠน์ • ์ปค๋ฐ‹์„ ๊ฐ€๋ฅดํ‚ค๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. (ํฌ์ธํ„ฐ ์—ญํ• )
    - ๋‹จ์ˆœํžˆ ๋ฒ„์ „๊ฐ™์€ ํƒœ๊ทธ์ด๋ฆ„๋งŒ์„ ๋‚จ๊ธฐ๋Š” ํƒœ๊ทธ
  • Annotated :
    - ๋งŒ๋“  ์‚ฌ๋žŒ, ์ด๋ฉ”์ผ, ๋‚ ์งœ, ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ์ฒด๋กœ ๋”ฐ๋กœ ์ €์žฅํ•œ๋‹ค
    - GPG(GNU Privacy Guard)๋กœ ์„œ๋ช…ํ• ์ˆ˜ ์žˆ๋‹ค.
    - ๋”ฐ๋ผ์„œ Lightweightํƒœ๊ทธ์™€๋Š” ๋‹ฌ๋ฆฌ ๊ณ ์œ ์˜ ์ €์žฅ๊ณต๊ฐ„์ด ๋˜ ์ƒ๊ธด๋‹ค.

Lightweight ํƒœ๊ทธ๋งŒ์„ ๋‚จ๊ธฐ๋ฉด ์ด๊ฒŒ ์–ด๋–ค ํƒœ๊ทธ์ธ์ง€ ๋ˆ„๊ฐ€ ๋งŒ๋“ ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋“ค์„ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—

Annotated ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ž„์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“œ๋Š” ํƒœ๊ทธ์ธ ๊ฒฝ์šฐ Lightweight ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

 

Lightweight ํƒœ๊ทธ ์ƒ์„ฑ

# ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑ
$ git tag <TAG NAME>
$ git tag v1.0

git-tag

 

ํŠน์ • ์ปค๋ฐ‹ ์„ ํƒ ํƒœ๊ทธ ์ง€์ •

์ด์ „ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ์ด์ „ ์ปค๋ฐ‹์— ๋Œ€ํ•ด ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

# ์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ถœ๋ ฅ
$ git log --pretty=oneline

git-tag

# git tag <ํƒœ๊ทธ๋ช…> <์ปค๋ฐ‹๋ฒˆํ˜ธ>
$ git tag v0.4 c78248 # c78248 ์ด์ „ ์ปค๋ฐ‹์— ํƒœ๊ทธ ์ง€์ •

git-tag

 

Annotated ํƒœ๊ทธ ์ƒ์„ฑ

lightweight ํƒœ๊ทธ๋Š” ํƒœ๊ทธ์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ํƒœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๋ฉด์„œ ์ •๋ณด๋ฅผ ๊ฐ™์ด ๋‚จ๊ธฐ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ Annotated ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€์ฒ˜๋Ÿผ ๋ณด๋ฉด ๋œ๋‹ค)

Annotated ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ tag -a ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

์ปค๋ฐ‹๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํƒœ๊ทธ๋ฅผ ๋‚จ๊ธธ๋•Œ์—๋„ ๋ฉ”์‹œ์ง€๋ฅผ ๋‚จ๊ฒจ์•ผ ํ•˜๋ฉฐ -m ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํƒœ๊น…๊ณผ ๋™์‹œ์— ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  • -a ๋Š” Annotated ํƒœ๊ทธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • -m ์˜ต์…˜ ์€ ๋ฉ”์‹œ์ง€๋ฅผ ํ•จ๊ป˜ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋ถ™์ด์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ Git ํŽธ์ง‘๊ธฐ๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.
# Annotated ํƒœ๊ทธ ์ƒ์„ฑ & ํƒœ๊ทธ ๋ฉ”์„ธ์ง€
$ git tag -a <TAG NAME> -m "<TAG MESSAGE>"
$ git tag -a v1.1 -m "second tag 1.1"
# ํŠน์ •์ปค๋ฐ‹์„ Annotated ํƒœ๊ทธ๋กœ ์ง€์ •
$ git tag -a v0.1.0 322b42f

 

lightweight ํƒœ๊ทธ vs annotated ํƒœ๊ทธ ์ฐจ์ด ๐Ÿ”ฅ

ํƒœ๊ทธ๋ฅผ ์กฐํšŒํ•ด ๋ณด์ž.

show-ref --tags ๋ช…๋ น์–ด๋ฅผ ๊ทธ๋ƒฅ ์‚ฌ์šฉํ•˜๋ฉด, ํƒœ๊ทธ ๋ ˆํผ๋Ÿฐ์Šค๋“ค์„ ๋ณด์—ฌ์ค€๋‹ค.

# lightweightํƒœ๊ทธ์ด๋“  annotatedํƒœ๊ทธ์ด๋“  ๊ทธ๋ƒฅ ํƒœ๊ทธ๋งŒ ๋‚˜์—ดํ•ด์„œ ๋ณด์—ฌ์ค€๋‹ค.
$ git show-ref --tags
...
3b0cb630236559e57c804642ef81e0d9f80def10 refs/tags/v2.2.1 # annotated ํƒœ๊ทธ
a859fc475db6d86b0a7e9b324c5ec3fb833f87c5 refs/tags/v2.2.2-lw # lightweight ํƒœ๊ทธ == ์ปค๋ฐ‹๋ฒˆํ˜ธ

๊ทธ๋Ÿฌ๋‚˜ ์ด๋ ‡๊ฒŒ๋งŒ ์กฐํšŒํ•˜๋ฉด ์–ด๋–ค๊ฒŒ lightweight ํƒœ๊ทธ์ธ์ง€ annotated ํƒœ๊ทธ์ธ์ง€ ์‚ฌ์‹ค์ƒ ๋ถ„๊ฐ„์„ ํ• ์ˆ˜๊ฐ€ ์—†๋‹ค.

 

๊ทธ๋ž˜์„œ --dereference ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด, ํƒœ๊ทธ ๊ฐ์ฒด๋ฅผ dereferencingํ•œ ๊ฒฐ๊ณผ๋กœ, ํƒœ๊ทธ ๊ฐ์ฒด๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ์ปค๋ฐ‹ ID(66b7e57)๋„ ๋ณด์—ฌ์ฃผ๊ฒŒ ๋œ๋‹ค.

Dereferencing

C ๋“ฑ์˜ ์–ธ์–ด์—์„œ, ํฌ์ธํ„ฐ ๊ฐ’ ์•ž์— ๋ถ™์—ฌ์„œ ํ•ด๋‹น ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ๊ฐ–๊ณ ์žˆ๋Š” ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜ค๋Š” * ์—ฐ์‚ฐ์ž๋ฅผ dereference operator๋ผ ํ•˜๋ฉฐ, ์ด ๋™์ž‘์„ ํฌ์ธํ„ฐ๋ฅผ dereferencingํ•œ๋‹ค๊ณ  ๋ถ€๋ฅธ๋‹ค.
# ammptated ํƒœ๊ทธ๋Š” ^{}๋กœ ๋”ฐ๋กœ ํ‘œ์‹œํ•ด์„œ ๋ ˆํผ๋Ÿฐ์Šคํ•˜๋Š” ์ปค๋ฐ‹๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค 
$ git show-ref --tags --dereference
...
3b0cb630236559e57c804642ef81e0d9f80def10 refs/tags/v2.2.1 # annotated ํƒœ๊ทธ
66b7e57d4b11283078f974a7818b77e268bbc5c0 refs/tags/v2.2.1^{} # annotated ํƒœ๊ทธ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ปค๋ฐ‹๋ฒˆํ˜ธ
a859fc475db6d86b0a7e9b324c5ec3fb833f87c5 refs/tags/v2.2.2-lw # lightweight ํƒœ๊ทธ == ์ปค๋ฐ‹๋ฒˆํ˜ธ

์šฐ์„  annotated ํƒœ๊ทธ์™€ lightweight ํƒœ๊ทธ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ๋ณด์—ฌ์ฃผ๋Š”, git show-ref --tags --dereference ๋ช…๋ น์–ด ๋ถ€ํ„ฐ ํŒŒํ—ค์ณ ๋ณด์ž.

show-ref๋Š” ๋กœ์ปฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋ ˆํผ๋Ÿฐ์Šค๋“ค์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ช…๋ น์–ด์ด๋‹ค. 

--dereference๋Š” ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ํƒœ๊ทธ๋ฅผ dereferencingํ•˜์—ฌ ํƒœ๊ทธ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋‚ด์šฉ๋„ ๋ณด์—ฌ์ค€๋‹ค.

์ด ๊ฒฝ์šฐ ^{}๋ฅผ ๋’ค์— ๋ถ™์—ฌ์„œ ๋ณด์—ฌ์ค€๋‹ค.

 

๊นƒ์—์„œ annotated ํƒœ๊ทธ๋Š” ํƒœ๊ทธํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ SHA-1๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ ์ž์ฒด์˜ ๋ฉ”์‹œ์ง€์™€ ID๋ฅผ ๊ฐ–๊ณ ์žˆ๋Š” ๊ฐ์ฒด์ด๋‹ค.

lightweight ํƒœ๊ทธ๋Š” ํƒœ๊ทธ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๊ณ , ํƒœ๊ทธํ•œ ๊ฐ์ฒด๋ฅผ ๊ทธ์ € ๊ฐ€๋ฆฌํ‚ค๊ณ ๋งŒ ์žˆ๋‹ค.

 

์•„์ง ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๋‹ค์Œ git ๊ทธ๋ž˜ํ”„์™€ ๋น„๊ตํ•ด์„œ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ด๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

git-tag
git-tag

lightweight ํƒœ๊ทธ

- ์ปค๋ฐ‹๋ฒˆํ˜ธ๊ฐ€ ๊ณง ํƒœ๊ทธ์ด๋‹ค. lightweightํƒœ๊ทธ๋Š” ๊ทธ๋ƒฅ ์ปค๋ฐ‹๋ฒˆํ˜ธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • v0.4 : c782f1 (ํƒœ๊ทธ์ด์ž ์ปค๋ฐ‹ ๋ฒˆํ˜ธ)
  • v1.0.0 : d07c24 (ํƒœ๊ทธ์ด์ž ์ปค๋ฐ‹ ๋ฒˆํ˜ธ)

annotated ํƒœ๊ทธ

- ์ž์ฒด ๋ฉ”์„ธ์ง€,์ด๋ฉ”์ผ ๋“ฑ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํƒœ๊ทธ๋ฒˆํ˜ธ์™€ ์ปค๋ฐ‹๋ฒˆํ˜ธ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ๋‹ค.

- ^{} ๋ถ™์–ด์žˆ์ง€ ์•Š์€๊ฑด ์ž์ฒด ํƒœ๊ทธ๋ฒˆํ˜ธ, ^{} ๋ถ™์–ด์žˆ๋Š” ๊ฒƒ์€ annotatedํƒœ๊ทธ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ปค๋ฐ‹ ๋ฒˆํ˜ธ์ด๋‹ค.

  • 1.1 : ab6bac (annotated ์ž์ฒด ํƒœ๊ทธ๋ฒˆํ˜ธ)
  • v1.0 : ed4449 (annotated ์ž์ฒด ํƒœ๊ทธ๋ฒˆํ˜ธ)

  • 1.1^{} :b84df1 (์ปค๋ฐ‹ ๋ฒˆํ˜ธ)
  • v1.0^{} : 428d64 (์ปค๋ฐ‹ ๋ฒˆํ˜ธ)

 

ํƒœ๊ทธ ์‚ญ์ œ

๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ํƒœ๊ทธ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด -d ๋˜๋Š” --delete ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค

$ git tag -d v0.1.0

 

ํƒœ๊ทธ ์ˆ˜์ •

 

lightweight ํƒœ๊ทธ ์ˆ˜์ •

# git tag <NEW TAG NAME> <OLD TAG NAME>
$ git tag v1.1.1 v1.1.0

# git tag -d <OLD TAG NAME>
$ git tag -d v1.1.0

 

annotated ํƒœ๊ทธ ์ˆ˜์ •

$ git show-ref --tags --dereference
37c606d7a2d7390649748ec8acd76cd07876c2eb refs/tags/v1.2.0
88c34a1ca247851f721738e36ca4228cf8b0724c refs/tags/v1.2.0^{}

# git tag -a <NEW TAG NAME> <OLD TAG NAME>^{} -m "<NEW TAG MESSAGE>"
$ git tag -a v1.3.0 v1.2.0^{} -m "<NEW TAG MESSAGE>"

# ์ด๋ ‡๊ฒŒ commit checksum ์ •๋ณด๋กœ ์ƒˆ๋กœ์šด tag ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค
$ git tag -a v1.3.0 88c34a1 -m "<NEW TAG MESSAGE>"

 

git push origin <ํƒœ๊ทธ ์ด๋ฆ„> (ํƒœ๊ทธ ์›๊ฒฉ์ €์žฅ์†Œ push ํ•˜๊ธฐ)  

git push ๋ช…๋ น์€ ์ž๋™์œผ๋กœ ๋ฆฌ๋ชจํŠธ ์„œ๋ฒ„์— ํƒœ๊ทธ๋ฅผ ์ „์†กํ•˜์ง€ ์•Š๋Š”๋‹ค.  

๊ณ ๋กœ ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ์„œ๋ฒ„์— ๋ณ„๋„๋กœ Push ํ•ด์•ผ ํ•œ๋‹ค.

# git push origin <ํƒœ๊ทธ ์ด๋ฆ„>
$ git push origin v1.0

 

๋งŒ์•ฝ ํ•œ ๋ฒˆ์— ํƒœ๊ทธ๋ฅผ ๋ชจ๋‘ Push ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด --tags ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ git push ๋ช…๋ น์„ ์‹คํ–‰ํ•œ๋‹ค.

# ๋ชจ๋“  ํƒœ๊ทธ๋ฅผ ํ•œ๊บผ๋ฒˆ์— pushํ•˜๊ธฐ
$ git push origin --tags

 

์ด์ œ ๋ˆ„๊ตฐ๊ฐ€ ์ €์žฅ์†Œ์—์„œ Clone ํ•˜๊ฑฐ๋‚˜ Pull ํ•˜๋ฉด ๋ชจ๋“  ํƒœ๊ทธ ์ •๋ณด๋„ ํ•จ๊ป˜ ์ „์†ก๋œ๋‹ค.    

 

 

์›๊ฒฉ ์ €์žฅ์†Œ ํƒœ๊ทธ ์‚ญ์ œ

ํƒœ๊ทธ ์‚ญ์ œ์—๋Š” 3๊ฐ€์ง€ ๋ช…๋ น์–ด๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค.

$ git push <REMOTE> :refs/tags/<TAG NAME>
$ git push <REMOTE> :<TAG NAME>
$ git push <REMOTE> -d <TAG NAME>
# ์›๊ฒฉ์ €์žฅ์†Œ์— ์žˆ๋Š” ํƒœ๊ทธ ๋‚˜์—ดํ•˜๊ธฐ
$ git ls-remote --tags
From https://github.com/skyksit/blog.git
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 <REMOTE> :refs/tags/<TAG NAME>
$ git push origin :refs/tags/v1.2.0
To https://github.com/skyksit/blog.git
 - [deleted]         v1.2.0

# git push <REMOTE> :<TAG NAME>
$ git push origin :v1.0.0
To https://github.com/skyksit/blog.git
 - [deleted]         v1.0.0

# git push <REMOTE> -d <TAG NAME>
$ git push origin -d v1.1.0
To https://github.com/skyksit/blog.git
 - [deleted]         v1.1.0