DevOps/GIT

github#11 git tag 와 branch 차이

aliceintr 2020. 11. 25. 03:46
반응형

git tag 는 주로 버전을 릴리즈 할 때 사용한다. branch 와 가장 큰 차이점은 branch는 commit 할때마다 commit ID 가 업데이트 되지만

git tag는 특정시점의 version 을 알려주는 거라고 이해하면 되겠다. 고정된 값이라고 할수있다.

 

#file한개를 생성하고 커밋을 한다 
% vi text1.txt
% git add text1.txt
% git commit -m "1"
[main f771c29] 1
 2 files changed, 1 insertion(+), 1 deletion(-)
 delete mode 100644 a.txt
 create mode 100644 text1.txt

#그 후 다시한번 동일한 파일을 수정하고 2번쨰 커밋을 한다.
% vi text1.txt
% git add text1.txt 
% git commit -am "2"
[main e38b142] 2
 1 file changed, 2 insertions(+), 1 deletion(-)

#log에 2개의 커밋이 있는 것을 확인할 수 있다. 
% git log
commit e38b142a1cbf6bd6b29ea81479976a896da94ad2 (HEAD -> main)
Author: aliceson89 <alice.son1109@gmail.com>
Date:   Tue Nov 24 13:18:35 2020 -0500

    2

commit f771c29d9e3462d3e80d5cc8b1d5c71dd269adb5
Author: aliceson89 <alice.son1109@gmail.com>
Date:   Tue Nov 24 13:17:42 2020 -0500

    1

#그 후 현재브랜치인 main의 최신 커밋에 tag를 지정해준다. 
% git tag 1.0.0 main

#태그확인하기 
% git tag
1.0.0

#로그에도 태그가 잘 나와있는 것을 볼 수 있다. 
% git log
commit e38b142a1cbf6bd6b29ea81479976a896da94ad2 (HEAD -> main, tag: 1.0.0)
Author: aliceson89 <alice.son1109@gmail.com>
Date:   Tue Nov 24 13:18:35 2020 -0500

    2

commit f771c29d9e3462d3e80d5cc8b1d5c71dd269adb5
Author: aliceson89 <alice.son1109@gmail.com>
Date:   Tue Nov 24 13:17:42 2020 -0500

    1

#다시한번 동일 파일을 수정하고 3번째 커밋을 한다. 
% vi text1.txt 
% git add text1.txt
% git commit -am "3"
[main 05897b0] 3
 1 file changed, 1 insertion(+)

#로그를 보면 commit ID는 업댓이 됬으나 태그는 그래로 전 commit ID 를 가르키는 것을 볼 수 있다. 
% git log
commit 05897b0713817fc71f39fd8bd97b3a7abd6696bf (HEAD -> main)
Author: aliceson89 <alice.son1109@gmail.com>
Date:   Tue Nov 24 13:20:28 2020 -0500

    3

commit e38b142a1cbf6bd6b29ea81479976a896da94ad2 (tag: 1.0.0)
Author: aliceson89 <alice.son1109@gmail.com>
Date:   Tue Nov 24 13:18:35 2020 -0500

    2

commit f771c29d9e3462d3e80d5cc8b1d5c71dd269adb5
Author: aliceson89 <alice.son1109@gmail.com>
Date:   Tue Nov 24 13:17:42 2020 -0500

    1

 

그리고 태그를 통해 전 commit의 코드상태로 돌아갈 수 있다.

 

#git checkout [tag 이름]
%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 e38b142 2

#현재 상태가 2번째 commit으로 바뀐것을 확인할 수 있다. 
% git log
commit e38b142a1cbf6bd6b29ea81479976a896da94ad2 (HEAD, tag: 1.0.0)
Author: aliceson89 <alice.son1109@gmail.com>
Date:   Tue Nov 24 13:18:35 2020 -0500

    2

commit f771c29d9e3462d3e80d5cc8b1d5c71dd269adb5
Author: aliceson89 <alice.son1109@gmail.com>
Date:   Tue Nov 24 13:17:42 2020 -0500

    1

 

Annotated Tag : 더 자세한 태그내용을 넣고 싶을  때 사용한다.

 

#git tag -a [version] -m [message]
% git tag -a 1.2.0 -m "2nd bug fix"   
alice@sonjin-as-MacBook-Pro github % git tav -v 1.2.0
git: 'tav' is not a git command. See 'git --help'.

The most similar command is
	tag

#tag에 관련된 자세한 설명을 볼 수 있다. 
% git tag -v 1.2.0
object 05897b0713817fc71f39fd8bd97b3a7abd6696bf
type commit
tag 1.2.0
tagger aliceson89 <alice.son1109@gmail.com> 1606242615 -0500

2nd bug fix

 

이제 원격저장소에 Push 를 해보면

 

#--tags 옵션을 꼭 넣어준다. 
% git push --tags
Enumerating objects: 2, done.
Counting objects: 100% (2/2), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 286 bytes | 286.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:aliceson89/GitLearn.git
 * [new tag]         1.0.0 -> 1.0.0
 * [new tag]         1.1.0 -> 1.1.0
 * [new tag]         1.2.0 -> 1.2.0
 
 

 

3tags 가 새로 생긴것을 볼 수 있다.

또한 tag 중 하나를 release 할 수 있다.

아래 그림에서 tags 섹션으로 들어간다음 "Edit release"를 누르면

 

 

 

다양한 릴리즈 정보 입력이 가능하며 릴리즈가 완료되면 아래와 같이 릴리즈 버전 확인이 가능하다.

 

 

아래의 링크는 버전관리 하는 방법에 대한 가이드라인이다.

semver.org/lang/ko/

 

유의적 버전 2.0.0

Semantic Versioning spec and website

semver.org

semver.org/

 

Semantic Versioning 2.0.0

Semantic Versioning spec and website

semver.org

 

이제는 tag 를 지워보도록 하자.

% git tag -d 1.0.0
Deleted tag '1.0.0' (was e38b142)

 

gistory 에서 tag 기록을 확인 할 수 있다.

commit ID message 까지 모두 확인가능함.

 

 

 

내용이 도움이 되셨다면 블로그 구독하기 부탁드리겠습니다.

* 이 글의 모든 저작권은 aliceintr에 있으며 무단 배포 및 사용은 자제해 주시기 바랍니다. *

반응형

'DevOps > GIT' 카테고리의 다른 글

github#13 git rebase 충돌해결  (0) 2020.11.26
github#12 git rebase 기초  (0) 2020.11.26
github#10 git push and pull  (0) 2020.11.24
github#9 git remote repository  (0) 2020.11.21
github#8 git stash  (0) 2020.11.20