본문 바로가기
Git

Git의 원리] 7. git tag 기본 사용법

by Fastlane 2022. 9. 8.
728x90
반응형

특정 commit에 tag(어떤 것으로든 지정할 수 있지만, 주로 배포 버전)를 지정하여 관리할 수 있는 기능이다. 

tag에는 Annotated Tag와 Lightweight Tag가 있다. 

git 초기화한다. 
$ git init
Initialized empty Git repository in C:/Project/git_test/.git/

파일을 생성하고 저장하여 commit한다. 
$ vim f1.txt

$ git add f1.txt
warning: LF will be replaced by CRLF in f1.txt.
The file will have its original line endings in your working directory

$ git commit -m 1
[master (root-commit) 21c8ef2] 1
 1 file changed, 1 insertion(+)
 create mode 100644 f1.txt

2번째 commit을 생성한다. 
$ vim f1.txt

$ git commit -am 2
warning: LF will be replaced by CRLF in f1.txt.
The file will have its original line endings in your working directory
[master 94643d8] 2
 1 file changed, 1 insertion(+)

# 최신 commit에 tag(1.0.0)를 지정한다. branch 또는 commit hash id도 추가지정 가능하다.
admin@DESKTOP-LFHA7HJ MINGW64 /c/Project/git_test (master)
$ git tag 1.0.0

# 최신 commit에 tag가 지정된 것을 확인할 수 있다. 
$ git log
commit 94643d8a77f26b6864a1daf6e7c54539bcd83f25 (HEAD -> master, tag: 1.0.0)
Author: 
Date:   Thu Sep 8 15:00:38 2022 +0900

    2

commit 21c8ef2e27bffba970adc233bb5f7a3b5d2a826b
Author: 
Date:   Thu Sep 8 15:00:15 2022 +0900

    1

# git tag command로 tag list도 확인 가능하다. 
$ git tag
1.0.0

# 3번째 commit을 생성한다. 
$ vim f1.txt

$ git commit -am 3
warning: LF will be replaced by CRLF in f1.txt.
The file will have its original line endings in your working directory
[master 7fdb494] 3
 1 file changed, 1 insertion(+)

# 1.0.0 tag가 지정된 commit을 checkout한다. 
# 특정 버전으로 돌아가서 소스를 수정하거나 소스를 확인할 수 있다. 
$ git checkout 1.0.0
Note: switching to '1.0.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 94643d8 2

# 다시 원래의 master branch로 돌아간다. 
$ git checkout master

# 최신 commit에 1.1.0이라는 annotated tag를 지정한다. 
admin@DESKTOP-LFHA7HJ MINGW64 /c/Project/git_test ((da939b6...))
$ git tag -a 1.1.0 -m "bug fix"

$ git log
commit da939b61664a59fc238a98383b1a2a2d1ecd9697 (HEAD, tag: 1.1.0)
Author: 
Date:   Thu Sep 8 15:05:13 2022 +0900

    3

commit 94643d8a77f26b6864a1daf6e7c54539bcd83f25 (tag: 1.0.0)
Author: 
Date:   Thu Sep 8 15:00:38 2022 +0900

    2

commit 21c8ef2e27bffba970adc233bb5f7a3b5d2a826b
Author: 
Date:   Thu Sep 8 15:00:15 2022 +0900

    1

$ git tag
1.0.0
1.1.0

# git tag -v로 annotated tag의 자세한 내용을 확인할 수 있다. 
$ git tag -v 1.1.0
object da939b61664a59fc238a98383b1a2a2d1ecd9697
type commit
tag 1.1.0
tagger 

bug fix
error: no signature found

# 원격 저장소를 연결한다. 
$ git remote add origin https://github.com/helloworld/tag.git

# tag를 원격 저장소에 push해 보자. --tags option을 추가한다. 
$ git push --tags origin master
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 350 bytes | 35.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/helloworld/tag.git
 * [new tag]         1.0.0 -> 1.0.0
 * [new tag]         1.1.0 -> 1.1.0

Tags확인이 가능하고, Create release 버튼으로 해당 Tag를 Release할 수 있다. 

Semantic Versioning : 버전을 지정할 때, 어떤 기준으로 할 수 있는지 참조할 수 있는 문서이다. 

https://semver.org/lang/ko/

 

tag를 삭제하는 방법도 알아보자. 

$ vim f1.txt

$ git commit -am 4
[detached HEAD 8a85314] 4
 1 file changed, 1 insertion(+)

$ git tag 1.1.1

$ git tag -d 1.1.1
Deleted tag '1.1.1' (was 8a85314)

 

728x90
반응형

댓글