Git을 사용한 형상관리 방법에서
태그(tag)를 사용하는 방법에 대하여 알아봅니다.
tag는 언제 사용하고 어떻게 사용할까요? 아래는 git 명령어 중에서 태깅을 하는 방법입니다. 먼저 왜 태그를 사용할까요?
! git에서 태그를 사용하는 이유는?
태그를 효과적으로 사용하면 운영 및 배포에서 매우 편리하게 사용할 수 있습니다. 특히 배포과정에서 많이 쓰이는데 그 이유는 태그명을 배포버전으로 정하고 간략한 정보를 함께 저장할 수 있기때문입니다. 태그를 사용해 원하는 태그로 돌아갈 수도 있죠!
# git 태그 관련 명령어 알아보기
태그를 사용하는 간략한 명령어들을 알아봅니다.
! 태그 리스트 보기, 출력하기
> git tag
아래와 같이 출력됩니다.
myApp v1.0
myApp v1.1
myApp v.1.2
...
..
이런 방식으로 리스트를 출력하며 특정 위치로 이동할 경우 어떤 태그가 저장되어 있는지 확인할 수 있습니다.
! tag에 저장된 메시지도 함께 보는 방법
태깅을 할때 저장된 메시지를 보려면 아래와 같이 -n옵션을 사용합니다.
git tag -l -n5
실행하면 아래와같이 tag 목록과 저장된 내용(메모)을 함께 출력합니다.
myApp v1.0 Webisfree version 1.0 2017/11/02
myApp v1.0 Webisfree version 1.1 2017/11/12
myApp v1.0 Webisfree version 1.2 2017/11/22
여기까지 태그의 출력방법을 알아보았습니다. 아래는 태그를 추가하는 방법에 대하여 알아봅니다.
! Git에 태그 추가하기
태그를 추가할 경우 아래와 같이 사용합니다. git tag 뒤에 태그이름을 입력합니다.
git tag v0.0.1
git의 태그는 또 다른 방식의 경량화된 버전이 존재합니다. 이 태그는 간단한 정보를 간략하게 남기는 목적으로 사용됩니다. 이를 사용할 경우 -a 옵션을 주면 가능합니다.
git tag -a 'myApp v3.0'
! Git에서 annotated 태그 추가하기
메시지를 추가할 경우 아래처럼 -m 옵션을 추가 사용합니다.
git tag -a 'myApp v3.1' -m '메시지 내용'
이처럼 annotation 메시지를 남길 수 있습니다.
! Git tag 이름 및 메시지 수정하기
간단하게 -f 옵션을 주면 다시 수정할 수 있습니다. 즉 'fatal already exists' 에러 메시지가 나타나지 않습니다. 만약 아래와 같이 다시 수정할 수 있죠.
git tag -f -a 'myApp v3.2' -m '메시지 내용 수정하기'
! 태그의 세부정보 보기
show 옵션을 추가해 아래와 같이 태그 정보를 확인할 수 있습니다.
git show v1.5
만약 위와 같이 태그를 설정하였다면 태그 이름과 메시지 그리고 마지막 commit 내용이 함께 출력됩니다.
myApp v3.2
메시지 내용 수정하기
... 그리고 커밋 관련 내용
! Git tag를 Push remote에 올리기
태그를 사용하는 목적은 원하는 커밋 시점으로 돌아갈 수 있다는 장점입니다. 만약 v1.0 상태로 변경하려면 아래와 같이 해당 태그 이름을 사용하여 push 명령어를 수행합니다.
git push origin v3.0
@ 모든 태그 한 번에 push 방법만약 tag를 remote로 push할 경우 하나씩이 아닌 한번에 모두 올리기 위해서 --tags를 사용할 수 있습니다.
git push origin --tags
@ 변경사항 commit과 tag 동시에 push 하는 방법변경 내용사항이 있는 경우 push하면서 동시에 태그도 반영하는 방법으로
--follow-tags를 사용할 수 있습니다.
git push --follow-tags
! Git tag를 삭제하기
만약 생성된 태그(tag)를 삭제할 경우 -d 옵션을 추가하여 사용합니다. 예를들어 v1.5 이름의 태그를 삭제한다면 아래와 같이 수행합니다.
git tag -d v3.0
! Remote의 tag 삭제하기
아래 방법으로 remote의 tag를 삭제할 수 있습니다.
git push tag :v3.0
# 마치면서
태그를 중요 시점에 저장하면 나중에 특정 위치로 이동하거나 찾을때 매우 편리합니다. 이를 사용 활용할 수 있는 부분 중 하나로 배포(Deployment)에 활용할 수 있다는 점입니다. 해당 어플리케이션의 버전을 태그로 관리, 배포할 경우 매우 편리하죠.