나의 지식 보관소
Git 태그 ( Tag ) 본문
태그 조회하기
Tag란 Git에서 커밋을 참조하기 쉽도록 알기 쉬운 이름을 붙이는 것을 말한다.
$ git tag 명령으로 만들어진 모든 태그를 확인할 수있다.
만약 검색 패턴을 사용하여 태그를 검색하고 싶다면 -l 또는 --list 옵션을 사용하면 된다.
$ git tag -l "검색 패턴"
태그의 종류
Git의 태그는 Lightweight 태그와 Annotated 태그 두 종류가 있다.
Lightweight 태그는 브랜치와 비슷하지만 브랜치처럼 가리키는 지점을 최신 커밋으로 이동시키지는 않는다. 단순히 특정 커밋에 대한 포인터일 뿐이다.
한편 Annotated 태그는 Git 데이터베이스에 태그를 만든 사람의 이름, 이메일과 태그를 만든 날짜, 그리고 태그 메세지도 저장한다. 또 GPG(GNU Privacy Guard)로 서명할 수도 있다. 일반적으로 Annotated 태그를 만들어 이 모든 정보를 사용할 수 있도록 하는것이 좋지만, 임시로 생성하는 태그거나 이러한 정보를 유지할 필요가 없는 경우에 Lightweight 태그를 사용한다
태그 붙이기
Annotated 태그
Annotated 태그를 만드는 방법은 $ git tag 명령을 사용할 때 -a 옵션을 추가 하면된다.
$ git tag -a v1.0 -m "my version 1.0"
위 예시에서는 -m 옵션으로 메세지를 함께 입력해주고 있지만, 만약 -m 옵션을 사용하지 않으면 Git은 편집기를 실행시켜 메세지를 입력 받는다.
$ git show <version> 명령으로 태그 정보와 커밋 정보를 모두 확인할 수 있다.
Lightweight 태그
Lightweight 태그는 기본적으로 파일에 커밋 체크섬을 저장하는 것일뿐 다른 정보를 저장하지 않으므로, Lightweight 태그를 만들 때는 -a, -s, -m 옵션을 사용하지 않는다.
$ git tag v1.1
따라서 $ git show 명령을 실행해도 별도의 태그 정보를 확인할 수 없고 단순히 커밋 정보만을 보여준다.
태그 삭제하기
태그를 삭제하기 위해서는 -d 옵션을 사용하면 된다.
$ git tag -d <태그 이름>
나중에 태그하기
예전 커밋에 대해서 태그를 하고 싶다면, 명령의 끝에 커밋 체크섬을 명시함으로써 할수있다.( 긴 체크섬을 전부 사용할 필요는 없다. )
$ git tag -a v1.2 9fceb02
태그 공유하기
$ git push 명령은 자동으로 리모트 서버에 태그를 전송해주지 않는다. 태그를 만들었으면 서버에 별도로 Push 해주어야한다. 브랜치를 공유하는것과 같이 $ git push origin <태그 이름> 명령으로 실행한다.
만약 한 번에 트그를 여러개 Push 하고 싶다면 --tags 옵션을 추가해서 $ git push 명령을 실행하면 된다. 이 명령으로 리모트 서버에 없는 태그를 모두 전송할 수 있다.
태그를 Checkout 하기
태그가 특정 버전을 가리키고 있고, 특정 버전의 파일을 체크아웃을 해서 확인하고 싶다면, 다음과 같이 실행하면 된다.
$ git checkout <태그 이름>
단 태그를 체크아웃하게 되면(브랜치를 체크아웃 하는것이 아니라면) "detached HEAD"상태가 되며 일부 Git관련 작업이 브랜치에서 작업하는 것과 다르게 동작할 수 있다. "detached HEAD" 상태에서 작업을 하고 커밋을 만들면 태그는 그대로있지만 새로운 커밋이 하나 쌓이는 상태가 되어 새 커밋에 도달할 수 있는 방법이 따로 없게된다.(커밋의 해시값을 정확히 기억하고 있으면 가능하긴하다.)그러므로 특정 태그의 상태에서 새로 작성한 커밋이 버그 픽스와 같이 의미가 있기 위해선 반드시 브랜치를 만들어서 작업해야한다.
'Git' 카테고리의 다른 글
Git 브랜치 (0) | 2020.04.26 |
---|---|
Git Alias(사용자 지정 명령) (0) | 2020.04.26 |
Git 리모트 저장소 (0) | 2020.04.23 |
Git 되돌리기 (0) | 2020.04.23 |
Git 커밋 히스토리 조회 (0) | 2020.04.23 |